В поле обзора файла для аттача, выбираю картинку весом 30кб, нажимаю "прикрепить" и через некоторое мгновение выползает ошибка на жёлтом фоне с восклицательным значком:
* warning: move_uploaded_file() [function.move-uploaded-file]: open_basedir restriction in effect. File(/var/tmp/phpYKSGkB) is not within the allowed path(s): (/opt/apache/vdomains/dj.interwave.ru/htdocs) in /opt/apache/vdomains/dj.interwave.ru/htdocs/go/includes/file.inc on line 239.
* warning: move_uploaded_file(/var/tmp/phpYKSGkB) [function.move-uploaded-file]: failed to open stream: Operation not permitted in /opt/apache/vdomains/dj.interwave.ru/htdocs/go/includes/file.inc on line 239.
* warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/var/tmp/phpYKSGkB' to 'temp/tmp_mRz6MV' in /opt/apache/vdomains/dj.interwave.ru/htdocs/go/includes/file.inc on line 239.
File upload error. Could not move uploaded file.
Лог ошибок в админке таков:
error php 25.10.2006 - 20:05 move_uploaded_file()
error php 25.10.2006 - 20:05 move_uploaded_file(/var/tmp/phpYKSGkB)
error php 25.10.2006 - 20:05 move_uploaded_file()
Drupal 4.7 + модули: image, image_attach, img_assist
Прошу помочь!
Комментарии
права на директорию files выставили?
PHP Safe Mode включен?
PHP Safe Mode - выключен админом сети
а по поводу выставления прав в папку temp (/htdocs/go/temp) стоят 775, а 777 не собираются даже и ставиться:
СuteFTP лог ошибки
COMMAND:> SITE CHMOD 777 /htdocs/go/temp
550 /htdocs/go/temp: Operation not permitted
ERROR:> Requested action not taken (e.g., file or directory not found, no access).
)
Нужны ли полные права (777) или вполне хватит 775?
Обязательно ли должн быть в апаче включен сейф мод?
safe mode должен быть выключен, а права на папку files должны быть 777... всё вроде просто... не раз уже объяснялось...
с temp понятно, а как насчет files?
Хм-хм-хм.
Рома, не нахожу в директории движка папку с названием files.
По всем директориям темпа (/temp/images/temp) установить права выше 775 не удаётся
создайте в корне директорию files
и в основных настройках проверьте, чтоб директория для аплоада называлась files
или Вы не через друпал хотите аплоадить, а через свой скрипт? тогда другое дело
Отлично. Создал саморучно папку files в корневой директории движка, дал полные права (777). Вошёл в админку и в основные настройки системы прописал, как Вы и говорили эту новосозданную директорию files
File system path: files
Temporary directory: files
Download method:
Public - files are available using http directly.
Иду пробую приатачить файл к будущей новости, выбираю файл .гиф весом 100кб, нажимаю кнопку аттач, и бум(! опять двадцать пять !)
* warning: move_uploaded_file() [function.move-uploaded-file]: open_basedir restriction in effect. File(/var/tmp/phpCCAxRb) is not within the allowed path(s): (/opt/apache/vdomains/dj.interwave.ru/htdocs) in /opt/apache/vdomains/dj.interwave.ru/htdocs/go/includes/file.inc on line 239.
* warning: move_uploaded_file(/var/tmp/phpCCAxRb) [function.move-uploaded-file]: failed to open stream: Operation not permitted in /opt/apache/vdomains/dj.interwave.ru/htdocs/go/includes/file.inc on line 239.
* warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/var/tmp/phpCCAxRb' to 'upload/temp/tmp_uOC497' in /opt/apache/vdomains/dj.interwave.ru/htdocs/go/includes/file.inc on line 239.
File upload error. Could not move uploaded file.
=(((
Идё смотреть (через FreeBSD) права на хостинге в корне установленного друпала
(/htdocs/go/)
-rw-rw-r-- 1 * www 2745 Oct 22 18:16 .htaccess
-rw-rw-r-- 1 * www 786 Oct 22 18:16 cron.php
drwxrwxrwx 2 * www 512 Oct 22 18:15 database
->> drwxrwxrwx 3 * www 512 Oct 28 12:19 files <<-
drwxrwxrwx 2 * www 512 Oct 22 18:15 includes
-rw-rw-r-- 1 * www 790 Oct 22 18:15 index.php
drwxrwxrwx 2 * www 1536 Oct 22 18:16 misc
drwxrwxrwx 6 * www 2048 Oct 25 16:46 modules
drwxrwxrwx 2 * www 512 Oct 22 18:15 scripts
drwxrwxrwx 3 * www 512 Oct 22 18:15 sites
drwxrwxrwx 7 * www 512 Oct 22 21:57 themes
-rw-rw-r-- 1 * www 26890 Oct 22 18:15 update.php
-rw-rw-r-- 1 * www 352 Oct 22 18:15 xmlrpc.php
зайдём в нашу любиму папку files:
drwxrwxrwx 3 * www 512 Oct 28 12:19 .
drwxrwxrwx 10 * www 512 Oct 28 12:27 ..
drwxrwxrwx 3 * www 512 Oct 28 12:19 images
и в папку images:
drwxrwxrwx 3 * www 512 Oct 28 12:19 .
drwxrwxrwx 3 * www 512 Oct 28 12:19 ..
drwxrwxrwx 2 * www 512 Oct 28 12:19 temp
Права как Вы видите везде максимальные.
В чём же косяк ?
[продолжение...]
drwxrwxrwx 2 * www 512 Oct 22 18:15 includes
-rw-rw-r-- 1 * www 790 Oct 22 18:15 index.php
drwxrwxrwx 2 * www 1536 Oct 22 18:16 misc
drwxrwxrwx 6 * www 2048 Oct 25 16:46 modules
drwxrwxrwx 2 * www 512 Oct 22 18:15 scripts
drwxrwxrwx 3 * www 512 Oct 22 18:15 sites
drwxrwxrwx 7 * www 512 Oct 22 21:57 themes
-rw-rw-r-- 1 * www 26890 Oct 22 18:15 update.php
drwxrwxrwx 4 * www 512 Oct 28 12:16 upload
-rw-rw-r-- 1 * www 352 Oct 22 18:15 xmlrpc.php
откроем
папку files
drwxrwxrwx 3 * www 512 Oct 28 12:19 .
drwxrwxrwx 10 * www 512 Oct 28 12:27 ..
drwxrwxrwx 3 * www 512 Oct 28 12:19 images
Права максимальные!
В чём же дело?
х/з
по идее друпальский скрпт выдает Вам страничку с кнопками browse, upload, и send
Вы делаете brouse C:\myfile.gif, жмете upload. тогда с помощью
http://dj.interwave.ru/misc/drupal.js
http://dj.interwave.ru/misc/upload.js
файл закачивается во временную директорию на сервере.
в upload.js есть функция
this.button = button;
this.wrapper = wrapper;
this.hide = hide;
redirectFormButton(uri, $(button), this);
}
которая делает вызов к функции $ из drupal.js
return document.getElementById(id);
}
и вызов к функции redirectFormButton из drupal.js
{
// (Re)create an iframe to target.
createIframe();
...
}
С помощью этого iframe и происходит аплоад на сервер во временную директорию.
Потом Вы жмете send, тем самым посылая POST запрос на друпальский скрипт, который должен из временной директории переместить файл в директорию files.
Теперь давайте думать
с правами на директорию files у Вас все в порядке
Переведем сообщение об ошибке:
Функция
вызванная на строке 239 файла
обнаружила, что она не может
получить доступ к временному файлу
т.к. он не находится в директории
к которой доступ есть
функция move_uploaded_file() хотела переместить и переименовать файл из
в
но это ей не удалось сделать, т.к. у php нет прав rw для директории
(а может только для файла /var/tmp/phpCCAxRb)
(кстати где на Вашем хоитинге находится директория upload/temp ?)
одним словом, надо настроить права для директории
или изменить директорию для аплоада
В php.ini она должна прописываться так
upload_tmp_dir = /your/upload/directory
если в php.ini директория не определена, то php использует системную директорию по умолчанию
должно помочь, а если не поможет, то будем дальше размышлять
P.S. попробуйте пнуть хостера (админа сети), пусть или с директорией решает, или php safe mode включает, даже не попробуйте, а потребуйте!
Рома! Большое спасибо, что всё разжувал
Попросил у админа, он мне сделал отдельную выделенную директорию на сервер апача по адресу /www/dj.interwave.ru/tmp
как теперь мне правильно прописать её в движок? также - не катит - ругается.
Сделайте файл a.php с таким содержанием:
положите его в корень сайта
перейдите по линку http://dj.interwave.ru/a.php
найдите там upload_tmp_dir и посмотрите, какие для него выставлены директории.
Тогда будет понятно в чем именно проблема.
И не помешало бы привести сообщение об ошибке.
Ага! Всё сделал как Вы написали, вписал в админку ссылку на темповую диреткорию "/opt/apache/vdomains/dj.interwave.ru/tmp" (так как phpinfo выдал следующую инфу: upload_tmp_dir: /opt/apache/vdomains/dj.interwave.ru/tmp, no value)
однако, как всегда при нажатии клавиши о подтверждении изменений, вылезает вот это:
* warning: mkdir() [function.mkdir]: open_basedir restriction in effect. File(/opt/apache/vdomains/dj.interwave.ru/tmp) is not within the allowed path(s): (/opt/apache/vdomains/dj.interwave.ru/htdocs) in /opt/apache/vdomains/dj.interwave.ru/htdocs/go/includes/file.inc on line 91.
* The directory /opt/apache/vdomains/dj.interwave.ru/tmp does not exist.
* warning: mkdir() [function.mkdir]: open_basedir restriction in effect. File(/opt/apache/vdomains/dj.interwave.ru/tmp) is not within the allowed path(s): (/opt/apache/vdomains/dj.interwave.ru/htdocs) in /opt/apache/vdomains/dj.interwave.ru/htdocs/go/includes/file.inc on line 91.
* The directory /opt/apache/vdomains/dj.interwave.ru/tmp does not exist.
Я не специалист по конфигурированию PHP, но бросается в глаза, что переменная open_basedir у вас имеет значение /opt/apache/vdomains/dj.interwave.ru/htdocs, и действительно /opt/apache/vdomains/dj.interwave.ru/tmp туда не входит, о чем и говорит предупреждение.
А что если изменить значение open_basedir на /opt/apache/vdomains/dj.interwave.ru?
Мда, что-то я совсем замучался и Вас замучал этим аттачем - видимо не судьба
inc, я попробовал поставить opt/apache/vdomains/dj.interwave.ru, но вышла такая же ошибка, что и в предыдущем моём посте.
Рут (корень) моего хостинга начинается так:
cgi-bin
htdocs
logs
tmp - то что недавно создал мне отдельно админ сети
зашел по адресу http://dj.interwave.ru/a.php, а там написано, что у вас по-прежнему open_basedir принимает значение /opt/apache/vdomains/dj.interwave.ru/htdocs. Попросите админа поменять значение так-же как он это сделал для переменной PHP upload_tmp_dir
inc, сенскс за наводки. админ сделал так:
upload_tmp_dir /opt/apache/vdomains/dj.interwave.ru/tmp
open_basedir /opt/apache/vdomains/dj.interwave.ru:/var/tmp/php:/opt/apache/vdomains/dj.interwave.ru/tmp
, /var/tmp/php
(или см. здесь http://dj.interwave.ru/a.php)
прписав в движке временную директорию:
/opt/apache/vdomains/dj.interwave.ru/tmp
и О БОЖЕ! файлы стали прикрепляться, но путь до них очень интересный становится после аттача к новости: http://dj.interwave.ru//opt/apache/vdomains/dj.interwave.ru/tmp/cpprules...
на столько интересный, что даже не представляю как бы это могло бы открыться
какие идеи?
Проверьте в админке в основных настройках системы должно быть:
File system path: files
Temporary directory: /opt/apache/vdomains/dj.interwave.ru/tmp
eee! cпасибо inc, всё заработало!
Есть еще один вопрос касаемый файлов.
В логах (/admin) постоянно ругается (зеленым цветом), что page not found
Type page not found
Date Saturday, 4 November, 2006 - 16:03
User tolyanich
Location http://dj.interwave.ru/modules/shoutbox/icon_delete.gif
Referrer http://dj.interwave.ru/admin/logs/event/2618
Message modules/shoutbox/icon_delete.gif not found.
Severity warning
То есть если кликнуть по ссылке http://dj.interwave.ru/modules/shoutbox/icon_delete.gif, то появляется вовсе не существующяя в этой директории картинка гифовая, а пустая страница шаблона page not found.
Почему так?
UP!
у вас там с путями бардак какой-то помоему в теме
<script src="js/scriptaculous.js?load=effects" type="text/javascript"></script>
<script src="js/lightbox.js" type="text/javascript"></script>
по идее должно быть
<script src="/js/scriptaculous.js?load=effects" type="text/javascript"></script>
<script src="/js/lightbox.js" type="text/javascript"></script>
в коде страницы поправил на (как вы посоветовали)
script src="/js/prototype.js" type="text/javascript">
не заметил разницы.
там, если просматривать через IE, то он возвращает ошибку
Строка 33
Символ 3
Ошибка Требуется объект
Код 0
Урл сайта
почему, что именно не правильно?
чуток разобрался
во-первых папка js у нас в теме лежит а не в корне соответственно путь должен быть полным
во-вторых скрипты эти подключаются 2 раза, имхо 1 раза достаточно
в-третьих
<form action="/?destination=modules%2Fshoutbox%2Ficon_delete.gif" method="post" id="user-login-form">
по моему и есть источник проблем
dyp@drupal.org, cпасиба за подсказки
2.убрал повторяющи выполняющиеся ява-скрипты из page.tpl.php
1.удалил папку "js" из корня, а оставил только та, которая в теме
3. так и не понял, где Вы нашли эту кривую строчку "form action="/?destination=modules%2Fshoutbox%2Ficon_delete.gif" method="post" id="user-login-form">" ?
посмотрел код страницы в FF
Дома стоит мозилла фф 1.5.0.7 Просмотрел исходный код страницы через неё, НО ничего подобного не нашёл! Смотреть может надо не главную страницу?
Единственное что подобное нашёл с вопросиком в пути - это:
<div class="content"><form action="/node?destination=" method="post" id="user-login-form">
упс это я дурканул
я зашел на ссылку с гифом, а это просто передаются данные в форму логина.
а где собсна гиф этот должен появляться?
появляться должен в блоке "Поболтаем" - молдуль шаутбокс
но их видно, есессно, только под админскими правами, хотя, как сказать - их там как раз не видно, а просто крестики вместо картинок
впрочем, проблему с кривыми картинками решил. была моя глупость - не туда половина картинок закинул
а вопрос по поводу "если просматривать через IE, то он возвращает ошибку
Строка 33
Символ 3
Ошибка Требуется объект
Код 0
Урл сайта"
переношу в отдельную тему.