[Решено] ошибка при установке дополнений

Тема в разделе "OpenCart", создана пользователем travlarnor, 30 ноя 2015.

Статус темы:
Закрыта.
  1. travlarnor

    travlarnor

    Регистрация:
    10 окт 2014
    Сообщения:
    46
    Симпатии:
    21
    Здравствуйте! При установке дополнений на opencart 2.1.0.1 возникают ошибки

    2015-11-30 14:39:52 - PHP Warning: ftp_mkdir(): Create directory operation failed. in /home/user/web/domain.com/public_shtml/admin/controller/extension/installer.php on line 338
    2015-11-30 14:39:52 - PHP Warning: ftp_put(): Could not create file. in /home/user/web/domain.com/public_shtml/admin/controller/extension/installer.php on line 345
    2015-11-30 14:39:52 - PHP Warning: ftp_put(): Could not create file. in /home/user/web/domain.com/public_shtml/admin/controller/extension/installer.php on line 345
    Предполагаю, что на какую-то директорию неправильно выставлены права, но на какую?
     
  2. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    2.050
    Симпатии:
    778
    Тут не так много вариантов. Проверьте права на extension и дальше поднимайтесь вверх, если у этой директории всё в порядке с правами.
    А заодно и владельца проверяйте.
     
  3. travlarnor

    travlarnor

    Регистрация:
    10 окт 2014
    Сообщения:
    46
    Симпатии:
    21
    нет, к сожалению. И на /admin, и на /admin/controller и на /admin/controller/extension права стоят 777.
    я не могу понять где /admin/controller/extension/installer.php создает директорию и файлы на 338 и 345 строках.
    архив с дополнениями загружается и распаковывается в /system/storage/upload

    в порядке бреда выставил
    /system/storage 777
    /system 777​

    все равно ошибка.

    upd:
    добавил в код /admin/controller/extension/installer.php:

    if (!in_array(basename($destination), $list_data)) {
    echo "начало адреса: <h3>".$destination."</h3> конец адреса<br>";
    if (!ftp_mkdir($connection, $destination)) {
    $json['error'] = sprintf($this->language->get('error_ftp_directory'), $destination);
    }
    }

    и выдал мне скрипт, что сначала он хочет создать директорию "admin", затем "system", и далее, но! не "/home/user/web/domain.com/public_shtml/admin", а именно "admin"!

    может в этом кроется ошибка?

    upd2: владелец директории root, пользователь ftp, прописанный в настройках другой, как то страшно рута прописывать, тем более права выставлены 777


     
    Последнее редактирование: 30 ноя 2015
  4. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    2.050
    Симпатии:
    778
    Рут не должен быть владельцем чего-либо в веб-директории или её самой (в данном случае это public_shtml). Из-за этого возникает большинство проблем с правами. Я обычно ставлю владельцем пользователя без прав рута и группу веб-сервера (в Debian/Ubuntu - это www-data).


    Он вывел только содержимое $destination. Как эта переменная используется в коде? Что на строке 338?
     
  5. travlarnor

    travlarnor

    Регистрация:
    10 окт 2014
    Сообщения:
    46
    Симпатии:
    21
    да, Вы правы... чего то я не продумал, и под рутом все залил.. сейчас буду исправлять, но все-же:
    извиняюсь, не проставил нумерацию..
    это следующая за echo строка:
    if (!ftp_mkdir($connection, $destination)) {​
    то есть скрипт пытается создать директорию с именем $destination.. а в переменной не хватает пути от корня.. мне так кажется.
     
  6. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    2.050
    Симпатии:
    778
    Там не нужен путь от корня. ftp_mkdir использует в качестве корня ту директорию, которая домашняя для текущего юзера. Если у юзера домашняя директория не /home/user/web/domain.com/public_shtml/, нужно установить её текущей директорией через функцию ftp_chdir, а затем уже использовать ftp_mkdir.
     
    travlarnor нравится это.
  7. travlarnor

    travlarnor

    Регистрация:
    10 окт 2014
    Сообщения:
    46
    Симпатии:
    21
    поменял пользователя и группу, не помогло.
    и еще слона не заметил: в самом начале всплывающего окна "SintaxError: Unexpected token н"
    пойду искать токен "н".. откуда он такой неожиданный??
     
  8. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    2.050
    Симпатии:
    778
    Посмотрите, что у вас с сервера приходит в браузер. Это ошибка из-за неправильного ответа сервера.
     
  9. travlarnor

    travlarnor

    Регистрация:
    10 окт 2014
    Сообщения:
    46
    Симпатии:
    21
    хм...
    исходный код просмотреть не могу, всплывающее окно ошибки не дает;
    в заголовках вроде ничего не нашел;
    токен сессии вроде верный..

    Вы что конкретно имели в виду, где посмотреть?
     
  10. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    2.050
    Симпатии:
    778
    Имел в виду именно то, что написал: открыть инструменты разработчика в браузере и посмотреть, что приходит с сервера. А дальше уже ковырять тот контроллер, из которого этот ответ приходит.
     
  11. travlarnor

    travlarnor

    Регистрация:
    10 окт 2014
    Сообщения:
    46
    Симпатии:
    21
    не дает открыть инструменты разработчика всплывающее окно.

    понимаю, странно, может я что не так делаю.
    после закрытия всплывающего окна с ошибкой во вкладке console ничего криминального не вижу(да и не должен, наверное, тк окно уже закрыл):

    Resource interpreted as Font but transferred with MIME type text/plain: "https://domain.net/admin/view/javascript/font-awesome/fonts/fontawesome-webfont.woff2?v=4.4.0".
    index.php?route=extension/installer&token=ns8yGfnvz6hOAUryMKnEN8XijUGobJeS:1​
    --- Добавлено, 1 дек 2015 ---
    каким-то неведомым образом проблема решена.
    делал много чего, из того, что помню:
    сменил домашнюю директорию для ftp-юзера
    включил ssh в Главная Магазины Настройки Сервер​
    не помогло..
    протер монитор, покурил​
    заработало... курите и протирайте монитор! (чертовщина какая-то..)
     
    Последнее редактирование: 1 дек 2015
Статус темы:
Закрыта.