Рейтинг:0

Apache не может обслуживать каталог или находить файлы, хотя все они существуют с правильными разрешениями.

флаг co

я использую CentOS8, с болотным эталоном(юм установить httpd php) установка apache и php.

У меня есть конфигурация (/etc/httpd/conf.d/trip.mydomain.mytld.conf), который выглядит следующим образом:

<VirtualHost *:80>
    ServerName trip.mydomain.mytld

    DocumentRoot /var/www/trip/public
    <Directory "/var/www/trip/public">
        Require all granted
    </Directory>

    RewriteEngine on
    RewriteCond %{SERVER_NAME} =trip.mydomain.mytld
    RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

В качестве проверки здравомыслия:

$ ls -la /var/www/
...
drwxr-xr-x. 10 apache root 4096 5 окт 23:01 отключение
...

$ ls -la /var/www/trip
...
drwxr-xr-x. 7 apache root 4096 6 окт 01:07 общедоступный
...

$ ls -la /var/www/trip/public
...
-rwxr-xr-x. 1 корень апача 532 5 окт 22:04 index.php
...

Чтобы убедиться, что это не SELinux, я отключил его и перезапустил сервер, но безрезультатно...

Что бы я ни пробовал, когда я загружаю trip.mydomain.mytld, я получаю 403 Forbidden, и мои журналы заполнены:

AH01276: Невозможно обслуживать каталог /var/www/tripwire/public: не найден соответствующий индекс каталога (index.html, index.php), а созданный сервером индекс каталога запрещен директивой Options.

У меня есть другая служба, работающая с аналогичной конфигурацией, которая работает, и я озадачен тем, что с этим не так, но я предполагаю, что это потому, что первая конфигурация является «по умолчанию», хотя я не уверен, какие проблемы могут быть причинение.

Если это уместно, результат запуска httpd -S составляет:

Конфигурация виртуального хоста:
*:443 — это NameVirtualHost
    сервер по умолчанию auth.mydomain.mytld (/etc/httpd/conf.d/auth.mydomain.mytld-le-ssl.conf:2)
    порт 443 namevhost auth.mydomain.mytld (/etc/httpd/conf.d/auth.mydomain.mytld-le-ssl.conf:2)
    порт 443 namevhost tripwire.mydomain.mytld (/etc/httpd/conf.d/tripwire.mydomain.mytld-le-ssl.conf:2)
*:80 — это NameVirtualHost
    сервер по умолчанию auth.mydomain.mytld (/etc/httpd/conf.d/auth.mydomain.mytld.conf:1)
    порт 80 namevhost auth.mydomain.mytld (/etc/httpd/conf.d/auth.mydomain.mytld.conf:1)
    порт 80 namevhost tripwire.mydomain.mytld (/etc/httpd/conf.d/tripwire.mydomain.mytld.conf:1)
Корневой сервер: "/etc/httpd"
Основной корневой документ: "/var/www/html"
Основной журнал ошибок: "/etc/httpd/logs/error_log"
Карта перезаписи мьютекса: using_defaults
Mutex ssl-stapling-refresh: using_defaults
Mutex authdigest-клиент: using_defaults
Мьютекс lua-ivm-shm: using_defaults
Сшивание Mutex ssl: using_defaults
Прокси-сервер Mutex: using_defaults
Mutex authn-socache: using_defaults
SSL-кэш Mutex: using_defaults
Мьютекс по умолчанию: dir="/etc/httpd/run/" механизм=по умолчанию
Кэш-память мьютекса: using_defaults
Mutex authdigest-opaque: using_defaults
Обратный вызов сторожевого таймера Mutex: using_defaults
Mutex proxy-balancer-shm: using_defaults
PidFile: "/etc/httpd/run/httpd.pid"
Определить: DUMP_VHOSTS
Определить: DUMP_RUN_CFG
Пользователь: name="apache" id=48
Группа: name="apache" id=48
Jose Fernando Lopez Fernandez avatar
флаг sz
Можете ли вы попробовать поместить блок «Directory» вне блока «VirtualHost» и посмотреть, что произойдет?
флаг co
Никаких изменений в поведении не наблюдается. :(
Jose Fernando Lopez Fernandez avatar
флаг sz
Извините, я пропустил сообщение об ошибке; вот ваша проблема: «Не найдено соответствующего DirectoryIndex (index.html, index.php), и сгенерированный сервером индекс каталога запрещен директивой Options». Таким образом, это не проблема с разрешениями. Поскольку у вас есть файл `index.php`, проверили ли вы правильность настройки PHP?
флаг co
Насколько я могу судить, он настроен правильно, но вполне возможно, что я пропустил проверку... `$ sudo php-fpm -t` дает `[06-Oct-2021 02:22:38] ВНИМАНИЕ: файл конфигурации / etc/php-fpm.conf успешно прошел тест, и php-fpm запущен от имени пользователя apache.
Jose Fernando Lopez Fernandez avatar
флаг sz
Я думаю, что Apache может не знать, что ему нужно передать запросы быстрому диспетчеру процессов. Можете ли вы создать файл `test.php` в общедоступном каталоге вашего сервера, используя только `
Jose Fernando Lopez Fernandez avatar
флаг sz
Это странно, потому что сообщение об ошибке конкретно включает `index.php`, так что это может быть не так, но, по крайней мере, исключает такую ​​возможность.
флаг co
Это дало другую ошибку, по крайней мере...`[proxy_fcgi:error] [pid dddd:tid tttt] [client aa.bb.cc.dd:ffff] AH01071: Получена ошибка 'Неизвестный основной сценарий\n'`
Jose Fernando Lopez Fernandez avatar
флаг sz
У меня никогда не было этой проблемы, но другие вопросы предполагают, что перезагрузка может сработать? Можешь попробовать?
флаг co
Перезагрузка (всего, php-fpm, apache... а потом и всей машины) ничего не исправила.
Jose Fernando Lopez Fernandez avatar
флаг sz
Да ладно. Что ж, посмотрим. Можете выложить версии apache и httpd? И можете ли вы опубликовать свой обработчик PHP и настройки DirectoryIndex из вашей конфигурации apache?
Jose Fernando Lopez Fernandez avatar
флаг sz
[Это ответ](https://serverfault.com/questions/960558/mod-rewrite-on-debian-stretch-breaks-php7-0-fpm-with-ah01071-got-error-primary?rq=1 ) Я имею в виду версии PHP-FPM и Apache, кстати
флаг co
`apache` известен как `httpd` в `CentOS`, поэтому для версий apache/httpd: `$ sudo httpd -V` дал (среди прочего) `Версия сервера: Apache/2.4.37 (centos)`. Под обработчиком php вы имеете в виду `/etc/httpd/conf.d/php.conf` (который не изменен из установки по умолчанию и просто запрещает все в `.user.ini` и выполняет различные настройки php-fpm наряду с добавлением в DirectoryIndex ) или что-то еще? Мой DirectoryIndex (после предварительной обработки conf) — `index.html, index.php` согласно журналам ошибок (и `grep -RiP из /etc/httpd` согласен).
Jose Fernando Lopez Fernandez avatar
флаг sz
Да, извините, я имел в виду apache и php-fpm. Директива `DirectoryIndex` не использует запятые для разделения файлов, все, что вам нужно, это `DirectoryIndex index.html index.php` (я не знаю, действительно ли это является причиной проблемы, но я в этом сомневаюсь). И да, мне просто интересно, действительно ли обрабатывается ваша директива `SetHandler` для файлов PHP
флаг co
Попался. `$ sudo php-fpm -v` дал `7.2.24`. Мой SetHandler — это `SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost"` в моем `/etc/httpd/conf.d/php.conf`. (Кроме того, установка `ProxyFCGIBackendType GENERIC` не исправила ситуацию, хотя я и не ожидал...)
флаг co
Я сдался и пошел с nginx, который работал. Ну что ж.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.