2013-08-03 4 views
-2

Это должно быть дубликат, но я не могу найти ответ ...PHP запустить FOPEN как администратор, не _www

Я пишу PHP веб-скрипт установки. Я хочу, чтобы php записывал файл, который впоследствии будет неприемлем. Разве нет способа научиться?

Очевидно, что учетные данные _www не будут начинаться с права на запись в каталог и не будут заканчиваться им. Я думаю, что пользователь установки, у которого будет доступ на запись, передаст свои учетные данные сценарию, который будет обрабатывать остальные.

+0

Когда вы говорите «админ», что вы имеете в виду? На какой платформе вы работаете? –

ответ

1

Вы не можете sudo изнутри PHP. Если вы хотите запустить что-то как root, вам нужно добавить пользователя Apache www в файл sudoers, что, вероятно, не очень хорошая идея. И если вы пишете скрипт установки, который другие будут запускать, это даже не вариант.

В этом случае вы не можете создавать файлы в каталоге, к которому у вас нет доступа в начале, хотя вы можете использовать chmod(), чтобы сделать файл доступным только после того, как вы его закончили. Это не означает, что другой скрипт, запущенный Apache, не может впоследствии использовать одну и ту же функцию для повторного добавления атрибутов записи.

Лучше всего создать пустые версии файлов, которые вам нужно написать. Попросите свой скрипт проверить доступ на запись в начале, а если нет, сообщите пользователю, что им нужно сделать, чтобы дать вам доступ на запись. Как только это будет завершено, они смогут продолжить. Ваш сценарий будет записывать файлы, а затем сообщать пользователю, что им нужно сделать, чтобы удалить доступ на запись. Ваш скрипт проверяет, что это произошло, и не позволит пользователю перейти к следующему шагу, пока не удастся удалить доступ на запись.

1

Что больше всего делать, это предоставить пустые файлы и позволить установщикам chmod их писать.

Это позволит пользователям поддерживать пользователя, предоставившего файл на начальном этапе.

Бонус в том, что вы, вероятно, могли бы написать более безопасные приложения вместо того, чтобы ваше приложение могло писать сервер.

Смежные вопросы