Как включить выполнение PHP-файлов в Apache на Fedora?

Вопрос или проблема

Я установил httpd и php v8.2.11 на свою Linux Fedora.

Но Apache не может выполнять файлы .php. (Ответы «Доступ запрещен». )

Я пытался использовать команду chmod в терминале, чтобы разрешить выполнение, и добавил AddType text/html .php .phps в файл httpd.conf и перезапустил httpd.service, но он все еще не может выполнить php-скрипты.

ПРИМЕЧАНИЕ: Я могу выполнять файлы .html.

ПРИМЕЧАНИЕ: Я пробовал установить chmod файлов php на 777 (хотя я знаю, что это очень опасно), но он по-прежнему не может выполнить.

Вот что я нашел в журнале ошибок:

AH01071: Got error 'Unable to open primary script: /var/www/backend/index.php (Permission denied)'

Что я могу сделать сейчас?

Вам не нужно использовать “chmod 777”, измените разрешения на:

chmod 644 /var/www/backend/index.php

Убедитесь, что владелец и группа установлены на пользователя веб-сервера (обычно apache или www-data).

chown apache:apache /var/www/backend/index.php

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

chmod 755 /var/www/backend

Если вы используете SELinux на Fedora, он может применять дополнительные политики безопасности. Чтобы проверить контексты SELinux и исправить их, вы можете использовать команду ls -Z и команду chcon.

ls -Z /var/www/backend
chcon -R -t httpd_sys_content_t /var/www/backend

Убедитесь, что ваша конфигурация Apache позволяет выполнять PHP. В вашем конфигурационном файле Apache (httpd.conf или в включенном файле) должны быть следующие строки:

AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

Убедитесь, что эти строки не закомментированы. Также убедитесь, что конфигурация вашего виртуального хоста (если она есть) включает директиву DirectoryIndex с «index.php».

Убедитесь, что модуль PHP загружен Apache. Вы можете проверить, загружен ли модуль php, используя:

apachectl -M

После внесения изменений в разрешения файлов и конфигурации перезапустите Apache, чтобы применить изменения.

systemctl restart httpd

Скорее всего, это проблема SELinux (неочевидная проблема, которая не возникает в других местах).

sudo chcon -R -t httpd_sys_rw_content_t /var/www/backend

Ответ или решение

Чтобы разрешить выполнение PHP файлов в Apache на Fedora, вам необходимо выполнить несколько шагов. Убедитесь, что вы следуете этому руководству последовательно, чтобы устранить проблему.

Шаг 1: Проверьте разрешения файлов

Ваши PHP файлы должны иметь правильные разрешения. Выполните следующие команды для установки соответствующих разрешений и владельцев:

  1. Установите разрешения для файла index.php:

    chmod 644 /var/www/backend/index.php
  2. Установите владельца и группу на веб-сервер (обычно это apache):

    chown apache:apache /var/www/backend/index.php
  3. Проверьте и установите разрешения для директории backend:

    chmod 755 /var/www/backend

Шаг 2: Настройки SELinux

Если вы используете SELinux, это может быть причиной вашей проблемы. Проверьте контексты SELinux и установите их правильно:

  1. Проверьте контексты SELinux для директории:

    ls -Z /var/www/backend
  2. Установите правильный контекст для директории:

    chcon -R -t httpd_sys_content_t /var/www/backend

Если ваш PHP-код должен записывать данные (например, в файлы), используйте следующее:

sudo chcon -R -t httpd_sys_rw_content_t /var/www/backend

Шаг 3: Конфигурация Apache

Убедитесь, что у вас есть правильные настройки в конфигурационном файле Apache (httpd.conf или в файлах виртуальных хостов):

  1. Добавьте или проверьте наличие следующих строк:

    AddType application/x-httpd-php .php
    AddType application/x-httpd-php-source .phps
  2. Убедитесь, что директива DirectoryIndex включает index.php:

    DirectoryIndex index.php index.html

Шаг 4: Проверьте загрузку модуля PHP

Убедитесь, что модуль PHP загружен. Для этого выполните:

apachectl -M | grep php

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

Шаг 5: Перезапустите Apache

После изменения разрешений и конфигураций необходимо перезапустить Apache для применения изменений:

systemctl restart httpd

Итог

Теперь попробуйте снова получить доступ к вашему PHP файлу через браузер. Если вы следовали всем шагам и правильно настроили разрешения, конфигурацию Apache и SELinux, проблема с "Access denied" должна исчезнуть. Если ошибка продолжает возникать, проверьте журналы ошибок Apache для получения дополнительной информации, которая может помочь диагностировать проблему:

journalctl -xe

или

tail -f /var/log/httpd/error_log

Следуя этим шагам, вы должны успешно настроить выполнение PHP файлов на вашем сервере с Apache в Fedora.

Оцените материал
Добавить комментарий

Капча загружается...