Я устанавливаю 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 =