Предоставьте php / apache доступ для чтения вне / html

Как я могу дать 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): не удалось открыть поток: в [имя файла здесь] отказано

0

Решение

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 после того, как вы это сделаете, чтобы изменения вступили в силу.

0

Другие решения

После борьбы с этим и пробуя предложения здесь я заставил это работать, но не понимаю почему …

Что я сделал для устранения неполадок …

Я перешел в каталог конфигурации, затем создал новый файл с помощью vim и назвал его test.php

затем: chown apache test.php

Изменен скрипт php, который включал его в test.php вместо settings.php

ЭТО РАБОТАЕТ !! ЗАЧЕМ? Оба файла имеют одинаковые разрешения и права собственности. Я изменил его обратно на settings.php, и он снова не удалось.

Затем я скопировал содержимое settings.php в test.php, удалил settings.php и переименовал в test.php-> settings.php

Сейчас я в деле.

Если бы кто-то мог объяснить, что случилось, это было бы здорово.

0