Как я могу дать php и apache доступ для чтения к каталогу вне / var / www / html?
Я пытаюсь включить в файл php следующее:
require '/var/www/config/settings.php';
Вот разрешения на конфигурации
drwxr-xr-x. 2 apache root 4096 Sep 16 14:02 config
И на settings.php
-rwxr-xr-x. 1 apache root 306 Sep 16 14:02 settings.php
PHP выдает следующую ошибку:
Предупреждение PHP: требуется (/var/www/config/settings.php): не удалось открыть поток: в [имя файла здесь] отказано
sudoing chown не будет работать, это было установлено в корневой записи документа вашего apache
вам нужно создать 2 записи. 1 это:
<VirtualHost *:80>
DocumentRoot /var/www/html
ServerName www.yourdomain.com
# Other directives here
</VirtualHost>
и для этого /var/www/config/settings.php вам нужно создать эту запись
<VirtualHost *:80>
DocumentRoot /var/www/config
ServerName www.yourdomain.com
# Other directives here
</VirtualHost>
Так работают веб-серверы, чтобы получить доступ к другому корню документа или /
когда вы называете это в URL, он смотрит на DocumentRoot
Обязательно перезапустите apache после того, как вы это сделаете, чтобы изменения вступили в силу.
После борьбы с этим и пробуя предложения здесь я заставил это работать, но не понимаю почему …
Что я сделал для устранения неполадок …
Я перешел в каталог конфигурации, затем создал новый файл с помощью vim и назвал его test.php
затем: chown apache test.php
Изменен скрипт php, который включал его в test.php вместо settings.php
ЭТО РАБОТАЕТ !! ЗАЧЕМ? Оба файла имеют одинаковые разрешения и права собственности. Я изменил его обратно на settings.php, и он снова не удалось.
Затем я скопировал содержимое settings.php в test.php, удалил settings.php и переименовал в test.php-> settings.php
Сейчас я в деле.
Если бы кто-то мог объяснить, что случилось, это было бы здорово.