Проблема с установкой дополнений после обновления ICMS 2.1.2

#46 10 мая 2015 в 18:17
Если решение вам не помогло, нужно понять, почему.
Для этого создайте новый чистый файл, назовите его удобным Вам именем и укажите расширение php.
В файл запишите текст, указанный ниже. Если необходимо, откорректируйте значения переменных в начале файла (комментарии указаны).
  1. <?php
  2.  
  3. $host = 'localhost'; //указать адрес сервера
  4. $user = 'anonymous'; // логин
  5. $pass = ''; //пароль
  6. $path = '/www'; //путь к папке сервера
  7. $is_pasv = true; //пассивный режим. Если не подключается, поменять на false
  8.  
  9. $connection = @ftp_connect($host);
  10.  
  11. if (!$connection) {
  12. echo '<pre>Неверный адрес сервера, либо сервер не отвечает</pre>';
  13. return;
  14. }
  15. echo '<pre>Сервер найден</pre>';
  16.  
  17. $session = @ftp_login($connection, $user, $pass);
  18. if (!$session) {
  19. echo '<pre>Не удалось авторизоваться с указанными логином/паролем</pre>';
  20. return;
  21. }
  22.  
  23. echo '<pre>Подключение выполнено успешно</pre>';
  24.  
  25. if ($is_pasv) {
  26. ftp_pasv($connection, true);
  27. }
  28.  
  29. $list = ftp_nlist($connection, $path);
  30.  
  31. if ($list === false) {
  32. echo '<pre>Возвращен пустой список файлов</pre>';
  33. return;
  34. }
  35.  
  36. echo '<pre>';
  37. print_r($list);
  38. echo '</pre>';
  39. ?>
  40.  
  41.  
после чего загрузите файл на вебсервер и откройте его через веб-браузер.
В идеале у вас должна открыться страничка без оформления с содержанием вида
  1. Сервер найден
  2. Подключение выполнено успешно
  3. (
  4. [0] => .htaccess
  5. [1] => bootstrap.php
  6. [2] => credits.txt
  7. [3] => cron.php
  8. [4] => index.php
  9. [5] => license.en.txt
  10. [6] => license.ru.txt
  11. [7] => readme.txt
  12. [8] => testftp.php
  13. )
Текст из страницы скопируйте на форум в сообщение.
#47 10 мая 2015 в 23:10

#45

помогло
#48 14 мая 2015 в 23:02
Хм… применил #45 — ошибка.
#49 16 мая 2015 в 23:33
Геннадий Иванович, немного не понял, Вы предлагаете вариант где нужно выбрать тот или иной кусок Вашего кода?
Просто ищется универсальный вариант, чтобы он подошел ко всем.
#50 17 мая 2015 в 00:40
Wanderer, проанализировал #45 NetBeans-ом
мне кажется вот эта строка неверна:
  1.  
  2. if ((!in_array($dir[1], $list)) && (!in_array('/' . $dir[1], $list)) && (!in_array('//' . $dir[1], $list))) {
  3.  
должно быть так:
  1.  
  2. if ((!in_array($dir[0] . '/' . $dir[1], $list)) && (!in_array('/' . $dir[0] . '/' . $dir[1], $list)) && (!in_array('//' . $dir[0] . '/' . $dir[1], $list))) {
  3.  
#51 17 мая 2015 в 00:56
При таком варианте — у меня ошибка пропала, только как бы это не оказался опять частный вариант :(
#52 17 мая 2015 в 01:04
Проверил на боевом сервере и на стенде — только с вариантом строки который я описал — ошибка отсутствует.
#53 17 мая 2015 в 08:08


.......
должно быть так:

  1.  
  2. if ((!in_array($dir[0] . '/' . $dir[1], $list)) && (!in_array('/' . $dir[0] . '/' . $dir[1], $list)) && (!in_array('//' . $dir[0] . '/' . $dir[1], $list))) {
  3.  

Скорпион
Получается, есть еще один вариант возврата nlist
Я dir[0] учел в
  1. $list = ftp_nlist($connection, $account['path'] . $dir[0]);
#54 17 мая 2015 в 08:11
Wanderer, причем тут вариант?
В строке которой идет проверка с массивом $list проверяется только имя файла $dir[1], без директории $dir[0], хотя в самом массиве $list в полученных значениях директории присутствуют.
И как оно может быть равно? В итоге получаем постоянное false.
Мне просто интересно как это могло сработать у lezginka.ru
#55 17 мая 2015 в 08:15
счас покажу массив &list. какой получается у меня
#56 17 мая 2015 в 08:17

if ($account['path']) {
$root = ftp_chdir($connection, $account['path']);
if (!$root) {
cmsUser::addSessionMessage(sprintf(LANG_CP_FTP_NO_ROOT, $account['path'], 'error');
return false;
}
}

Геннадий Иванович
Тут интересная ситуация:
$account['path'] всегда будет чему-то равна (не пустая строка) благодаря 31-33 и 74 строчкам кода.
#57 17 мая 2015 в 08:18


Wanderer, причем тут вариант?
В строке которой идет проверка с массивом $list проверяется только имя файла $dir[1], без директории $dir[0], хотя в самом массиве $list в полученных значениях директории присутствуют.
И как оно может быть равно? В итоге получаем постоянное false.
Мне просто интересно как это могло сработать у lezginka.ru

Скорпион

У меня на трех разных серверах в &list только конечные имена объектов, без путей. Пример приведен в 46-ом сообщении.
Поэтому и пишу про еще один вариант.

UPD: нашел еще один сервер, на котором сейчас протестирую код.
#58 17 мая 2015 в 08:21
  1.  
  2. (
  3. [0] => /system/core/action.php
  4. [1] => /system/core/backend.php
  5. [2] => /system/core/cache.php
  6. [3] => /system/core/cachefiles.php
  7. [4] => /system/core/cachememory.php
  8. [5] => /system/core/config.php
  9. [6] => /system/core/controller.php
  10. [7] => /system/core/core.php
  11. [8] => /system/core/database.php
  12. [9] => /system/core/debug.php
  13. [10] => /system/core/debugconfig.php
  14. [11] => /system/core/eventsmanager.php
  15. [12] => /system/core/form.php
  16. [13] => /system/core/formfield.php
  17. [14] => /system/core/frontend.php
  18. [15] => /system/core/installer.php
  19. [16] => /system/core/mailer.php
  20. [17] => /system/core/model.php
  21. [18] => /system/core/nestedsets.php
  22. [19] => /system/core/permissions.php
  23. [20] => /system/core/request.php
  24. [21] => /system/core/template.php
  25. [22] => /system/core/template.php.original
  26. [23] => /system/core/updater.php
  27. [24] => /system/core/uploader.php
  28. [25] => /system/core/user.php
  29. [26] => /system/core/widget.php
  30. )
  31.  
Ну и как тут можно получить true если пытаемся найти core.php и не /system/core/core.php?
#59 17 мая 2015 в 08:22
Wanderer, а у меня на двух серверах $list такой какой я указал выше… и?
#60 17 мая 2015 в 08:27
а вот вывод скрипта из #46 на том же серваке (стенде):
  1.  
  2. Сервер найден
  3. Подключение выполнено успешно
  4. (
  5. [0] => /.htaccess
  6. [1] => /bootstrap.php
  7. [2] => /cache
  8. [3] => /credits.txt
  9. [4] => /cron.php
  10. [5] => /index.php
  11. [6] => /license.en.txt
  12. [7] => /license.ru.txt
  13. [8] => /readme.txt
  14. [9] => /system
  15. [10] => /templates
  16. [11] => /test.php
  17. [12] => /testing.html
  18. [13] => /upload
  19. [14] => /wysiwyg
  20. )
  21.  
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.