У нас есть PHP-синтаксический скрипт PHP, который загружает фотографии в структуру папок, например /content/images/2012/05/31/%object_id%/
. Этот синтаксический анализатор работает в основном как cronjob DirectAdmin. Мы сталкиваемся с множеством проблем с получением прав на доступ к папкам, чтобы включить загрузку в этот каталог как для cronjob, так и для запуска анализатора через браузер.
Согласно print_r(posix_getpwuid(fileowner($directory)));
владелец каталога такой же, как get_current_user()
. Тем не менее, я получаю: Warning: mkdir() [function.mkdir]: Permission denied
при запуске скрипта через браузер. Он отлично работает при работе в качестве задания cron.
Все папки имеют chmod 0777, и новые папки создаются как таковые;
mkdir($path,0777,true);
Естественно, у нас есть те же проблемы с разрешением при загрузке и / или удалении самих файлов.
Есть ли способ включить все действия с файлами, выполняемые как задание cron, так и через браузер?
Мы работаем под управлением Linux с PHP версии 5.2.17.
Пара думает, что: get_current_user получает владельца файла .php (то есть скрипта), но НЕ имя пользователя, который запускает скрипт php. Неизменно это разные, поскольку файл будет загружен вами (обычный пользователь), а php / apache будет работать как другой пользователь (часто называемый «apache» или «www».) Вам нужен последний из этих двух. предлагаемый фрагмент из руководства php, чтобы получить следующее:
$processUser = posix_getpwuid(posix_geteuid()); print $processUser['name'];
(http://php.net/manual/en/function.get-current-user.php – см. комментарии)
Однако, чтобы решить вашу текущую проблему, я настоятельно рекомендую запустить cron в качестве того же пользователя, что и php / apache, как (проверьте man-страницу на crontab) – пользователь должен быть тем, что указан в этом фрагменте выше, CHOWN the files и каталоги к этому же пользователю (в настоящее время они будут root) и группе, которая совместно используется вами и клиентом FTP. Затем убедитесь, что у пользователя и группы есть права на чтение + запись, поэтому вы также можете редактировать с ftp. Удостоверьтесь, что вы изменяете разрешения для обоих версий (775) и файлов (644) по мере создания их сценария.
Также обратите внимание, что если вы mkdir (), то в приведенной выше директории также должны быть права на запись для пользователя (и это может быть ваша первоначальная проблема, и почему здесь может писать только root / cron).