PHP-файл недоступен для записи: как проверить через php, требуется ли chmod, chown или chgrp - PullRequest
2 голосов
/ 05 апреля 2011

Когда мой установочный скрипт распознает, что файл (файл журнала) недоступен для записи -: 1001 *

 is_writable('myerror.log');

Я хочу показать «серферу» (администратору программного обеспечения), как решить эту проблему.О, мальчик, не каждый «программный администратор» обладает достаточной квалификацией: - (

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

Если пользователь или группа веб-серверов соответствуют пользователю или группе файлов, я хочу показать, чтоадминистратор программного обеспечения должен запустить chmod.


Справочная информация Я понял, что мои процессы Apache работают под 9x www-data и 1x root. Если я позвоню

$scriptRunnerUserId = getmyuid();
$scriptRunnerGroupId = getmygid();

, я получу 0 длякаждый из них означает «root» и «root». Но если у меня есть файл с owner = «root» и group = «root» и с 0664, is_writeable () по-прежнему возвращает false. Он возвращает true, только если я установил 0666 (world writeable). Если я установил owner = "www-data" и chmod 0644. он доступен для записи. Означает: getmyuid () не возвращает ожидаемое значение.

Случай "разработчик не очень опытный"? ;-)(если возможно я не хочу делать эксec () вызывает)

PS: Пожалуйста, не обвиняйте меня в предоставлении моему apache root-пользователя (это виртуальная машина для разработки).

1 Ответ

2 голосов
/ 05 апреля 2011

Предполагая, что вы работаете в системе POSIX (что, вероятно, верно, если у вас есть пользователь root), вы можете попробовать что-то вроде posix_geteuid, чтобы узнать ваш эффективный идентификатор пользователя.

...