Здравствуйте! При установке дополнений на 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 Предполагаю, что на какую-то директорию неправильно выставлены права, но на какую?
Тут не так много вариантов. Проверьте права на extension и дальше поднимайтесь вверх, если у этой директории всё в порядке с правами. А заодно и владельца проверяйте.
нет, к сожалению. И на /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
Рут не должен быть владельцем чего-либо в веб-директории или её самой (в данном случае это public_shtml). Из-за этого возникает большинство проблем с правами. Я обычно ставлю владельцем пользователя без прав рута и группу веб-сервера (в Debian/Ubuntu - это www-data). Он вывел только содержимое $destination. Как эта переменная используется в коде? Что на строке 338?
да, Вы правы... чего то я не продумал, и под рутом все залил.. сейчас буду исправлять, но все-же: извиняюсь, не проставил нумерацию.. это следующая за echo строка: if (!ftp_mkdir($connection, $destination)) {то есть скрипт пытается создать директорию с именем $destination.. а в переменной не хватает пути от корня.. мне так кажется.
Там не нужен путь от корня. ftp_mkdir использует в качестве корня ту директорию, которая домашняя для текущего юзера. Если у юзера домашняя директория не /home/user/web/domain.com/public_shtml/, нужно установить её текущей директорией через функцию ftp_chdir, а затем уже использовать ftp_mkdir.
поменял пользователя и группу, не помогло. и еще слона не заметил: в самом начале всплывающего окна "SintaxError: Unexpected token н" пойду искать токен "н".. откуда он такой неожиданный??
хм... исходный код просмотреть не могу, всплывающее окно ошибки не дает; в заголовках вроде ничего не нашел; токен сессии вроде верный.. Вы что конкретно имели в виду, где посмотреть?
Имел в виду именно то, что написал: открыть инструменты разработчика в браузере и посмотреть, что приходит с сервера. А дальше уже ковырять тот контроллер, из которого этот ответ приходит.
не дает открыть инструменты разработчика всплывающее окно. понимаю, странно, может я что не так делаю. после закрытия всплывающего окна с ошибкой во вкладке 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 в Главная Магазины Настройки Серверне помогло.. протер монитор, покурилзаработало... курите и протирайте монитор! (чертовщина какая-то..)