Не понимаю из за чего не атачаться файлы

Главные вкладки

Аватар пользователя tolyanich2 tolyanich2 26 октября 2006 в 0:12

В поле обзора файла для аттача, выбираю картинку весом 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

Прошу помочь!

Комментарии

Аватар пользователя tolyanich2 tolyanich2 26 октября 2006 в 21:26

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?
Обязательно ли должн быть в апаче включен сейф мод?

Аватар пользователя B.X B.X 26 октября 2006 в 23:07

safe mode должен быть выключен, а права на папку files должны быть 777... всё вроде просто... не раз уже объяснялось...

Аватар пользователя tolyanich2 tolyanich2 27 октября 2006 в 19:35

Хм-хм-хм.
Рома, не нахожу в директории движка папку с названием files.
По всем директориям темпа (/temp/images/temp) установить права выше 775 не удаётся

Аватар пользователя Гость Гость (не проверено) 27 октября 2006 в 19:55

создайте в корне директорию files
и в основных настройках проверьте, чтоб директория для аплоада называлась files

или Вы не через друпал хотите аплоадить, а через свой скрипт? тогда другое дело

Аватар пользователя tolyanich2 tolyanich2 28 октября 2006 в 16:31

Отлично. Создал саморучно папку 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

Права как Вы видите везде максимальные.
В чём же косяк ? Sad

Аватар пользователя tolyanich2 tolyanich2 28 октября 2006 в 16:34

[продолжение...]
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

Права максимальные!
В чём же дело? Sad

Аватар пользователя ˛ ˛ 28 октября 2006 в 20:25

х/з
по идее друпальский скрпт выдает Вам страничку с кнопками browse, upload, и send
Вы делаете brouse C:\myfile.gif, жмете upload. тогда с помощью
http://dj.interwave.ru/misc/drupal.js
http://dj.interwave.ru/misc/upload.js
файл закачивается во временную директорию на сервере.
в upload.js есть функция

function jsUpload(uri, button, wrapper, hide) {
  this.button = button;
  this.wrapper = wrapper;
  this.hide = hide;
  redirectFormButton(uri, $(button), this);
}

которая делает вызов к функции $ из drupal.js

function $(id) {
  return document.getElementById(id);
}

и вызов к функции redirectFormButton из drupal.js

function redirectFormButton(uri, button, handler)
{
  // (Re)create an iframe to target.
  createIframe();
...
}

С помощью этого iframe и происходит аплоад на сервер во временную директорию.
Потом Вы жмете send, тем самым посылая POST запрос на друпальский скрипт, который должен из временной директории переместить файл в директорию files.



Теперь давайте думать
с правами на директорию files у Вас все в порядке

Переведем сообщение об ошибке:
Функция

вызванная на строке 239 файла

http://dj.interwave.ru/includes/file.inc

обнаружила, что она не может
получить доступ к временному файлу

/var/tmp/phpCCAxRb

т.к. он не находится в директории

/opt/apache/vdomains/dj.interwave.ru/htdocs

к которой доступ есть

функция move_uploaded_file() хотела переместить и переименовать файл из

/var/tmp/phpCCAxRb

в

upload/temp/tmp_uOC497

но это ей не удалось сделать, т.к. у php нет прав rw для директории

/var/tmp

(а может только для файла /var/tmp/phpCCAxRb)
(кстати где на Вашем хоитинге находится директория upload/temp ?)

одним словом, надо настроить права для директории

/var/tmp

или изменить директорию для аплоада
В php.ini она должна прописываться так

file_uploads = On
upload_tmp_dir = /your/upload/directory

если в php.ini директория не определена, то php использует системную директорию по умолчанию

должно помочь, а если не поможет, то будем дальше размышлять Smile

P.S. попробуйте пнуть хостера (админа сети), пусть или с директорией решает, или php safe mode включает, даже не попробуйте, а потребуйте!

Аватар пользователя tolyanich2 tolyanich2 31 октября 2006 в 22:11

Рома! Большое спасибо, что всё разжувал Lol

Попросил у админа, он мне сделал отдельную выделенную директорию на сервер апача по адресу /www/dj.interwave.ru/tmp

как теперь мне правильно прописать её в движок? также - не катит - ругается.

Аватар пользователя ˛ ˛ 31 октября 2006 в 23:39

Сделайте файл a.php с таким содержанием:

<?php print phpinfo(); ?>

положите его в корень сайта
перейдите по линку http://dj.interwave.ru/a.php
найдите там upload_tmp_dir и посмотрите, какие для него выставлены директории.
Тогда будет понятно в чем именно проблема.
И не помешало бы привести сообщение об ошибке.

Аватар пользователя tolyanich2 tolyanich2 1 ноября 2006 в 0:57

Ага! Всё сделал как Вы написали, вписал в админку ссылку на темповую диреткорию "/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.

Аватар пользователя inc inc 1 ноября 2006 в 21:09

Я не специалист по конфигурированию 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?

Аватар пользователя tolyanich2 tolyanich2 1 ноября 2006 в 22:37

Мда, что-то я совсем замучался и Вас замучал этим аттачем - видимо не судьба Sad

inc, я попробовал поставить opt/apache/vdomains/dj.interwave.ru, но вышла такая же ошибка, что и в предыдущем моём посте.

Рут (корень) моего хостинга начинается так:
cgi-bin
htdocs
logs
tmp - то что недавно создал мне отдельно админ сети

Аватар пользователя inc inc 2 ноября 2006 в 12:46

зашел по адресу http://dj.interwave.ru/a.php, а там написано, что у вас по-прежнему open_basedir принимает значение /opt/apache/vdomains/dj.interwave.ru/htdocs. Попросите админа поменять значение так-же как он это сделал для переменной PHP upload_tmp_dir

Аватар пользователя tolyanich2 tolyanich2 4 ноября 2006 в 11:54

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...
на столько интересный, что даже не представляю как бы это могло бы открыться Smile

какие идеи?

Аватар пользователя inc inc 4 ноября 2006 в 17:43

Проверьте в админке в основных настройках системы должно быть:
File system path: files
Temporary directory: /opt/apache/vdomains/dj.interwave.ru/tmp

Аватар пользователя tolyanich2 tolyanich2 4 ноября 2006 в 19:01

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.
Почему так?

Аватар пользователя dyp@drupal.org dyp@drupal.org 7 ноября 2006 в 2:36

Quote:
Есть еще один вопрос касаемый файлов.
В логах (/admin) постоянно ругается (зеленым цветом), что page not found

у вас там с путями бардак какой-то помоему в теме

<script src="js/prototype.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"></script>
<script src="/js/scriptaculous.js?load=effects" type="text/javascript"></script>
<script src="/js/lightbox.js" type="text/javascript"></script>
Аватар пользователя tolyanich2 tolyanich2 7 ноября 2006 в 23:35

в коде страницы поправил на (как вы посоветовали)
script src="/js/prototype.js" type="text/javascript">

не заметил разницы.

там, если просматривать через IE, то он возвращает ошибку
Строка 33
Символ 3
Ошибка Требуется объект
Код 0
Урл сайта

почему, что именно не правильно?

Аватар пользователя dyp@drupal.org dyp@drupal.org 8 ноября 2006 в 0:42

чуток разобрался
во-первых папка js у нас в теме лежит а не в корне соответственно путь должен быть полным
во-вторых скрипты эти подключаются 2 раза, имхо 1 раза достаточно
в-третьих
<form action="/?destination=modules%2Fshoutbox%2Ficon_delete.gif"  method="post" id="user-login-form">
по моему и есть источник проблем

Аватар пользователя tolyanich2 tolyanich2 9 ноября 2006 в 0:39

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">" ?

Аватар пользователя dyp@drupal.org dyp@drupal.org 9 ноября 2006 в 20:24

Quote:
3. так и не понял, где Вы нашли эту кривую строчку “form action=”/?destination=modules%2Fshoutbox%2Ficon_delete.gif” method=”post” id=”user-login-form”>” ?

посмотрел код страницы в FF

Аватар пользователя tolyanich2 tolyanich2 10 ноября 2006 в 21:23

Дома стоит мозилла фф 1.5.0.7 Просмотрел исходный код страницы через неё, НО ничего подобного не нашёл! Смотреть может надо не главную страницу?
Единственное что подобное нашёл с вопросиком в пути - это:
<div class="content"><form action="/node?destination="  method="post" id="user-login-form">

Аватар пользователя dyp@drupal.org dyp@drupal.org 11 ноября 2006 в 1:07

упс это я дурканул
я зашел на ссылку с гифом, а это просто передаются данные в форму логина.
а где собсна гиф этот должен появляться?

Аватар пользователя tolyanich2 tolyanich2 11 ноября 2006 в 14:11

Dirol
появляться должен в блоке "Поболтаем" - молдуль шаутбокс
но их видно, есессно, только под админскими правами, хотя, как сказать - их там как раз не видно, а просто крестики вместо картинок

Аватар пользователя tolyanich2 tolyanich2 11 ноября 2006 в 16:46

впрочем, проблему с кривыми картинками решил. была моя глупость - не туда половина картинок закинул Smile

а вопрос по поводу "если просматривать через IE, то он возвращает ошибку
Строка 33
Символ 3
Ошибка Требуется объект
Код 0
Урл сайта"

переношу в отдельную тему.