Путь test.sh - /var/www/proj/test.sh, а project.php - в /var /www /, а мой test.sh использует и создает некоторые файлы .txt.

когда я выполняю test.sh через терминал, он работает нормально, но когда я запускаю project.php

http://localhost/project.php

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

Ошибки:

rm: remove write-protected regular empty file `/var/www/project/result/List.txt'?  
project/test.sh: line 8: /var/www/project/result/List.txt: Permission denied

Итак, как я могу навсегда предоставить права на запись в /var /www /*

1 ответ1

1

Чтобы предоставить доступ на запись к /var/www вам нужно предоставить доступ на запись пользователю, который запускает веб-сервер. Например, в Ubuntu это обычно можно сделать с помощью:

chown www-data /var/www
chmod u+w /var/www

(установить www-data , будучи пользователем, запустившим веб-сервер, как владелец /var/www и предоставив право на запись в каталог его владельцу - на тот случай, если у него его еще нет). В зависимости от конфигурации вашего сервера, в некоторых случаях это может не сработать (например, заблокировано политикой SELinux или AppArmor).

Однако по соображениям безопасности делать это не рекомендуется. В худшем случае (учитывая ошибку в одном из сценариев, запущенных на веб-сервере), внешний злоумышленник может записать произвольные данные в /var/www , поместив любое содержимое на ваш веб-сервер, или сценарии, которые он затем сможет выполнить. ..

В зависимости от вашего приложения вы можете предоставить доступ к веб-серверу в другой (выделенный) каталог и извлекать файлы из этого каталога, когда они вам нужны в сценарии PHP.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .