SALIK

SALIK

salik.biz
+72
Репутация
50
Рейтинг
#1 Модуль zip для php 31 июля 2014 в 13:03
  1. <?php
  2.  
  3. /**
  4.  * Рекурсивно удаляет директорию
  5.  * @param string $directory
  6.  * @param bool $is_clear Если TRUE, то директория будет очищена, но не удалена
  7.  * @return bool
  8.  */
  9. function files_remove_directory($directory, $is_clear=false){
  10.  
  11. if(substr($directory,-1) == '/'){
  12. $directory = substr($directory,0,-1);
  13. }
  14.  
  15. if(!file_exists($directory) || !is_dir($directory) || !is_readable($directory)){
  16. return false;
  17. }
  18.  
  19. $handle = opendir($directory);
  20.  
  21. while (false !== ($node = readdir($handle))){
  22.  
  23. if($node != '.' && $node != '..'){
  24.  
  25. $path = $directory.'/'.$node;
  26.  
  27. if(is_dir($path)){
  28. if (!files_remove_directory($path)) { return false; }
  29. } else {
  30. if(!@unlink($path)) { return false; }
  31. }
  32.  
  33. }
  34.  
  35. }
  36.  
  37. closedir($handle);
  38.  
  39. if ($is_clear == false){
  40. if(!@rmdir($directory)){
  41. return false;
  42. }
  43. }
  44.  
  45. return true;
  46.  
  47. }
  48.  
  49. /**
  50.  * Очищает директорию
  51.  * @param string $directory
  52.  * @return bool
  53.  */
  54. function files_clear_directory($directory){
  55. return files_remove_directory($directory, true);
  56. }
  57.  
  58. /**
  59.  * Возвращает дерево каталогов и файлов по указанному пути в виде
  60.  * рекурсивного массива
  61.  * @param string $path
  62.  * @return array
  63.  */
  64. function files_tree_to_array($path){
  65.  
  66. $data = array();
  67.  
  68. $dir = new DirectoryIterator( $path );
  69.  
  70. foreach ( $dir as $node ){
  71. if ( $node->isDir() && !$node->isDot() ){
  72. $data[$node->getFilename()] = files_tree_to_array( $node->getPathname() );
  73. } else if ( $node->isFile() ){
  74. $data[] = $node->getFilename();
  75. }
  76. }
  77.  
  78. return $data;
  79.  
  80. }
  81.  
  82. /**
  83.  * Нормализует путь к файлу, убирая все условные переходы.
  84.  *
  85.  * Например путь
  86.  * /path/to/../folder
  87.  * будет преобразован в
  88.  * /path/folder
  89.  *
  90.  * @param string $path
  91.  * @return string
  92.  */
  93. function files_normalize_path($path) {
  94.  
  95. $parts = explode('/', $path);
  96. $safe = array();
  97. foreach ($parts as $idx => $part) {
  98. if (empty($part) || ('.' == $part)) {
  99. continue;
  100. } elseif ('..' == $part) {
  101. array_pop($safe);
  102. continue;
  103. } else {
  104. $safe[] = $part;
  105. }
  106. }
  107.  
  108. $path = implode('/', $safe);
  109. return $path;
  110.  
  111. }
  112.  
  113. /**
  114.  * Получает строку вида "8M" или "1024K" и возвращает значение в байтах
  115.  * Полезно при получении max_upload_size из php.ini
  116.  *
  117.  * @param string $value
  118.  * @return int
  119.  */
  120. function files_convert_bytes($value) {
  121. if ( is_numeric( $value ) ) {
  122. return $value;
  123. } else {
  124. $value_length = strlen( $value );
  125. $qty = substr( $value, 0, $value_length - 1 );
  126. $unit = strtolower( substr( $value, $value_length - 1 ) );
  127. switch ( $unit ) {
  128. case 'k':
  129. $qty *= 1024;
  130. break;
  131. case 'm':
  132. $qty *= 1048576;
  133. break;
  134. case 'g':
  135. $qty *= 1073741824;
  136. break;
  137. }
  138. return $qty;
  139. }
  140. return $value;
  141. }
  142.  
  143. /**
  144.  * Переводит байты в Гб, Мб или Кб и возвращает полученное число + единицу измерения
  145.  * в виде единой строки
  146.  * @param int $bytes
  147.  * @return string
  148.  */
  149. function files_format_bytes($bytes) {
  150.  
  151. $kb = 1024;
  152. $mb = 1048576;
  153. $gb = 1073741824;
  154.  
  155. if (round($bytes / $gb) > 0) {
  156. return ceil($bytes / $gb) . ' ' . LANG_GB;
  157. }
  158.  
  159. if (round($bytes / $mb) > 0) {
  160. return ceil($bytes / $mb) . ' ' . LANG_MB;
  161. }
  162.  
  163. if (round($bytes / $kb) > 0) {
  164. return ceil($bytes / $kb) . ' ' . LANG_KB;
  165. }
  166.  
  167. return $bytes . ' ' . LANG_B;
  168.  
  169. }
  170.  
  171. /**
  172.  * Очищает имя файла от специальных символов
  173.  *
  174.  * @param string $filename
  175.  * @return string
  176.  */
  177. function files_sanitize_name($filename){
  178.  
  179. $filename = mb_strtolower($filename);
  180. $filename = preg_replace(array('/[\&]/', '/[\@]/', '/[\#]/'), array('-and-', '-at-', '-number-'), $filename);
  181. $filename = preg_replace('/[^(\x20-\x7F)]*/','', $filename);
  182. $filename = str_replace(' ', '-', $filename);
  183. $filename = str_replace('\'', '', $filename);
  184. $filename = preg_replace<
#2 Модуль zip для php 31 июля 2014 в 12:43
В этом файле /var/www/salik.biz/system/libs/files.helper.php 223 строка закомментирована (стандартный фаил инстанта, я его не правил)
  1.  
  2. /**
  3.  * Получает строку вида "8M" или "1024K" и возвращает значение в байтах
  4.  * Полезно при получении max_upload_size из php.ini
  5.  *
  6.  * @param string $value //это 223 строка
  7.  * @return int
  8.  */
  9.  
#3 Модуль zip для php 31 июля 2014 в 12:31

Похоже что это не ошибка установки скрипта, а проблема настроек, что то там с заголовками. Что в указанных строках ?

Lora
А в каких именно строках?
#4 Модуль zip для php 31 июля 2014 в 12:19
Вот, что логи говорят:
  1. [Thu Jul 31 12:15:42 2014] [error] [client 81.211.107.110] PHP Warning: curl_setopt(): supplied argument is not a valid File-Handle resource in /var/www/salik.biz/system/libs/files.helper.php on line 223, referer: http://salik.biz/admin/update
  2.  
  3. [Thu Jul 31 12:15:43 2014] [error] [client 81.211.107.110] PHP Warning: fclose() expects parameter 1 to be resource, boolean given in /var/www/salik.biz/system/libs/files.helper.php on line 227, referer: http://salik.biz/admin/update
  4.  
  5. [Thu Jul 31 12:15:43 2014] [error] [client 81.211.107.110] PHP Warning: Cannot modify header information - headers already sent by (output started at /var/www/salik.biz/system/libs/files.helper.php:225) in /var/www/salik.biz/system/core/controller.php on line 535, referer: http://salik.biz/admin/update
#5 Модуль zip для php 31 июля 2014 в 12:07
Да выполнил sudo apt-get install zip, дебиан сказал, что все уже установлено и все хорошо, но обновиться все равно не получается =(
#6 Модуль zip для php 31 июля 2014 в 11:52
Может быть еще в чем то трабла, жмякаю установить обновления

и вот вместо обновлений =(
#7 Модуль zip для php 31 июля 2014 в 11:44
#8 Модуль zip для php 31 июля 2014 в 11:26


Это архиватор?

Lora
В комментах к обновлению инстанта instantcms.ru/novosti/release210.html

Жму "Install Update" переходит на страницу ....../admin/update/install и там просто куча кракозябр разных… В чём косяк?

Daniel

Для PHP должны быть подключены модули curl и zip

r2
Ну вот curl я прикрутил, а с zip трабла =(
#1 Модуль zip для php 31 июля 2014 в 11:12
Всем здрасти!
Не как не могу на дебиан натянуть модуль для пхп "zip"
Установил pecl
Сделал pecl install zip
Получил:
  1. ............. бла бла бла а потом вот:
  2. In file included from /tmp/pear/temp/zip/php_zip.c:30:0:
  3. /usr/include/php5/ext/pcre/php_pcre.h:29:18: fatal error: pcre.h: No such file o r directory
  4. compilation terminated.
  5. make: *** [php_zip.lo] Ошибка 1
  6. ERROR: `make' failed
Или каким образом можно еще установить данный модуль, или как избавится от ошибки?
#9 Not Found 7 июля 2014 в 14:58
Все, я починил, нужно в виртуальном хосте изменить везде AllowOverride None на AllowOverride All
#10 Not Found 7 июля 2014 в 14:43


Предположу что на серваке не обрабатывается htaccess. Такая проблема на нгинксе бывает.

એન્ટોન
А как можно проверить или как сделать, что бы обрабатывался?
#11 Not Found 7 июля 2014 в 14:11


меня лично смущает вот эта строчка

SERVER_ADDR 192.168.0.102

если я конечно не чего не путаю то тут должно быть что-то внешнее — но не как не локальное.

Скорпион

Ну главная страница то открывается, значит все верно…
#1 Мультипоиск в InstantShop 7 июля 2014 в 14:10
Добрый день.

Допустим у меня есть несколько магазинов, привязанных к одной БД (Инстантцмс 2 это вроде позволяет) по типу magazin1.domen.ru; magazin2.domen.ru и т. д.

Есть ли возможность у InstantShop поиска не по одному сайту, а по всем, которые в связке?
#12 Not Found 7 июля 2014 в 09:24
Помогите, проблема еще актуальна…
#13 Not Found 3 июля 2014 в 16:14


Киньте ссылку на phpinfo

એન્ટોન

www.salik.biz/phpinfo.php
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.