Назад | Перейти на главную страницу

httpd не может получить доступ к внешнему каталогу - moodle

Я устанавливаю moodle в экземпляре rhel. Я хочу сохранить каталог «moodle» вне / var / www / http. Я последовал за этот документация. Чтобы определить каталог moodle, я обновил /etc/httpd/conf/httpd.conf файл следующим образом:

<Directory "/usr/moodle_dir/moodle">
DirectoryIndex index.php
AcceptPathInfo on
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
Alias /moodle "/usr/moodle_dir/moodle" 

Все содержимое moodle находится в Moodle каталог. Я отключил SELinux setenforce 0.

Я установил разрешение файла как:

chown -R apache:apache /usr/moodle_dir   

Когда я нажимаю URL-адрес в браузере, он говорит

У вас нет разрешения на доступ к / moodle на этом сервере.

Может ли кто-нибудь сообщить мне, пожалуйста, в чем проблема? (когда я помещаю каталог moodle в www / http, тогда в браузере загружалась страница moodle.) Php версии 7.3, rhel: 7.7. Moodle 3.8.2 [последняя]

ОБНОВИТЬ: Я добавил создал каталог внутри / var / www / html / test и обновил <Directory вход и Alias соответственно. Тогда это сработало. Это означает, что ссылка на каталог работает. Есть что-то еще, блокирующее httpd доступ к внешнему каталогу www / html.

С Apache 2.4,

Order allow,deny
Allow from all

Следует заменить на

Require all granted

Проверьте свой php.ini, если open_basedir не был установлен в / var / www / html / ...

; open_basedir, if set, limits all file operations to the defined directory
; and below.  This directive makes most sense if used in a per-directory
; or per-virtualhost web server configuration file.
; http://php.net/open-basedir
;open_basedir =

Также, если бы вы использовали fpm-php, проверьте владельца процесса и установлен ли chroot в его конфигурации, например. /etc/php/7.0/fpm/pool.d/www.conf:

; Chroot to this directory at the start. This value must be defined as an
; absolute path. When this value is not set, chroot is not used.
; Note: you can prefix with '$prefix' to chroot to the pool prefix or one
; of its subdirectories. If the pool prefix is not set, the global prefix
; will be used instead.
; Note: chrooting is a great security feature and should be used whenever
;       possible. However, all PHP paths will be relative to the chroot
;       (error_log, sessions.save_path, ...).
; Default Value: not set
;chroot =