Как изменить владельца для записи файлов в директорию?

Avenus

Under Glory Yield
Как изменить владельца для записи файлов в директорию?

Привет, всем! :)

Проблема:
---
По cron создаются директории, у которых владелец root и права 0777.
У скрипта выполняющего php-функцию move_uploaded_file нет прав для записи файлов в эти директории.
Если создать директорию из скрипта и дать ей права 0777, то владелец этой директории становится www-data и снова нет доступа для записи файлов в директорию.
Если создать директорию по FTP и дать права 0777, то у нее владелец psacln и права на запись файлов есть.
---

Подскажите, пожалуйста, что возможно сделать, чтобы при создании папок по задаче cron или из скрипта был доступ на запись в них файлов?
 

fixxxer

К.О.
Партнер клуба
0777 - это значит, что писать могут все. Не там ищешь.

Надо не свои домыслы писать, а копипастить точные сообщения об ошибках.
 

Фанат

oncle terrible
Команда форума
чтобы скопировать сообщение об ошибке, его еще надо получить :)

после кроновской команды надо написать > /full/path/error.log
ну, и ошибок, соответственно, вывод включить

ли запуская вручную из командной строки, ошибки смотреть
 

Avenus

Under Glory Yield
Фaнaт, именно так. Где взять ошибки, если скрипт их не выдает.
Прописано: error_reporting(~E_ALL)
Cron не вызывает ошибок, директории создаются без проблем.
 

Avenus

Under Glory Yield
dimagolov, не гони... ошибся с ~ и что теперь?

Написал небольшой обработчик ошибок для записи ошибки в файл. Вот, что записалось:
PHP:
move_uploaded_file() [<a href='function.move-uploaded-file'>function.move-uploaded-file</a>]:
SAFE MODE Restriction in effect.
The script whose uid is 10002 is not allowed to access
/var/www/vhosts/... // здесь путь к папке
owned by uid 33
Я же говорю, что с владельцем не лады :)
 

Avenus

Under Glory Yield
baev, получается не нужно было вообще писать
error_reporting()? И как тогда вообще об ошибках узнавать?

В общем, увидел ошибку. Зашел в интерфейс управления сервером, выключил Safe mode - теперь работает загрузка.
 

baev

‹°°¬•
Команда форума
Avenus, какое слово тут:
Посмотрите в мануале, какие аргументы функция error_reporting() принимает.
— Вам непонятно?
Вы в мануал заглянули?

И откуда, по-Вашему, следует такой:
получается не нужно было вообще писать
error_reporting()?
— вывод?
Просто интересна цепочка логических рассуждений, которая привела Вас к такому умозаключению.
 

Avenus

Under Glory Yield
baev, потому что я в начале скрипта прописал:
error_reporting(E_ALL);
Что всегда помогало увидеть ошибку. А тут вдруг мне говорят, что:
аааааа...
это в мемориез
И, да, смотрел руководство.

-~{}~ 05.02.10 21:17:

Насчет этого:
получается не нужно было вообще писать
error_reporting()?
Это же не вывод, а сарказм :)
 

baev

‹°°¬•
Команда форума
Avenus, я извиняюсь — это я сам попутал.
Всё правильно: дело было в «~».
 

dimagolov

Новичок
dimagolov, не гони... ошибся с ~ и что теперь?
то, что в программировании нету мелочей. ошибся в одном символе, и программа не работает вообще или работает совсем не так, как ожидалось. поэтому внимательность и методичность так важна. а шаманизм в стиле "а вот вставляю это и посмотрю что будет" не эффективен.

уже когда-то говорил, повторю еще раз. форум это не место телепатической отладки чужих программ, с отладкой своего кода лучше всего может справится один человек, его автор.
 

Avenus

Under Glory Yield
В общем, уже неважно :)
Важно то, что нужно увидеть ошибку, чтобы ее исправить.
Просто error_reporting(E_ALL) не выдавал мне её.
 
Сверху