PHP-скрипт не выполняется на сервере Apache. U-18.4 PHP 7.2 Локальный хост

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

Мой Apache работает и отображает страницу по умолчанию. Я могу перенаправить файл PHP в php, и команда echo отображается правильно. Я уже исследовал предыдущие версии Ubuntu и не могу найти решение.

a2query -m php7.2 -> Включен скриптом обслуживания

В /etc/apache2/mods-available/php7.2.conf

Эти строки были закомментированы.
Выполнение PHP скриптов в пользовательских директориях отключено по умолчанию.
Чтобы снова включить PHP в пользовательских директориях, закомментируйте следующие строки
(от <IfModule ...> до </IfModule>.) НЕ устанавливайте значение On, так как
это предотвратит отключение его через файлы .htaccess.
Закомментированы следующие строки.
<IfModule mod_userdir.c>
    <Directory /home/*/public_html>
        php_admin_flag engine Off
    </Directory>
</IfModule>

Классический phpinfo.php обрабатывается, но Apache не предоставляет выходные данные. Т.е. php < phpinfo.php перечисляет всю информацию.

Я считаю, что необходимо установить параметр и/или значение не установлено. Это произошло после обновления с Ubuntu 15.04 до Ubuntu 18.04. Любая помощь будет признательна.

В файле /etc/apache2/envvars пользователь и группа были неверными. изменено export APACHE_RUN_USER=www-data на имя_пользователя и изменено export APACHE_RUN_GROUP=www-data на имя_пользователя

Другие изменения были внесены в файл конфигурации apache, чтобы phpmyadmin заработал, но это уже другая история.

Я столкнулся с аналогичной проблемой, когда файлы php не выполнялись после обновления с Ubuntu 18.10 до 19.10 и php 7.3. Оказалось, что этот вопрос был моим ответом. Мой веб-корень находился в /home/xyz/public_html. Решением было закомментировать блок <IfModule mod_userdir.c> ... </IfModule>.

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

Когда мы рассматриваем проблему, как в вашем случае, с тем, что PHP-скрипты не исполняются на сервере Apache, но сервер Apache корректно отображает страницу по умолчанию и может обрабатывать другой PHP-код через CLI, это указывает на несколько возможных причин. Давайте разберемся в этой проблеме более подробно.

Теория (Theory)

Apache и PHP работают совместно через определенные модули, чтобы интерпретировать и исполнять PHP-код. Основной модуль, ответственный за интеграцию PHP с Apache, — это mod_php, который должен быть включен и правильно настрой:

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

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

Пример (Example)

Вы указали, что в файле конфигурации /etc/apache2/mods-available/php7.2.conf закомментированы строки, относящиеся к <IfModule mod_userdir.c>. Это важный момент, поскольку этот модуль отвечает за разрешение исполнения скриптов в пользовательских директориях. Если ваши PHP-файлы находятся в директориях /home/*/public_html, использование mod_userdir необходимо для того, чтобы PHP-скрипты исполнялись корректно.

Вы также упомянули, что изменили переменные среды в файле /etc/apache2/envvars с www-data на ваше имя пользователя. Это может создать конфликт с файловой системой, так как Apache обычно работает под пользователем www-data для целей безопасности и управления правами доступа.

Применение (Application)

Решение подобных проблем требует последовательного подхода к диагностике и устранению неполадок. Вот последовательность шагов, которые вы можете предпринять:

  1. Проверка модулей Apache:
    Убедитесь, что модуль PHP включен в Apache. Используйте команду a2enmod php7.2 и затем перезапустите Apache (sudo systemctl restart apache2).

  2. Проверка конфигурации mod_userdir:
    Обратите внимание на секцию <IfModule mod_userdir.c>. Если ваши PHP-файлы содержатся внутри домашних директорий, эта секция должна быть разблокирована. Закомментируйте строки, которые запрещают выполнение PHP в пользовательских директориях:

    #<IfModule mod_userdir.c>
    #    <Directory /home/*/public_html>
    #        php_admin_flag engine Off
    #    </Directory>
    #</IfModule>
  3. Правила доступа и права на файлы:
    Проверьте права на доступ и владение файлами ваших PHP с использованием ls -la в директории /home/*/public_html. Убедитесь, что пользователь www-data, под которым работает Apache, имеет необходимые права на чтение и выполнение скриптов.

  4. Переменные окружения:
    Верните изменения в /etc/apache2/envvars на www-data, если это возможно. Это лучшая практика для обеспечения безопасности и правильного функционирования всей системы.

  5. Проверка ошибок Apache:
    Ознакомьтесь с логами ошибок Apache (/var/log/apache2/error.log) на предмет дополнительных подсказок о том, что может быть не так.

  6. Перепроверка конфигурации после обновления:
    Обновление системы может вносить изменения в расположение и содержимое конфигурационных файлов. Проверьте, все ли ваши настройки мигрированы правильно, и обратите внимание на возможные изменения в дефолтной конфигурации, которые могли быть внедрены обновлением.

Следуя этим шагам, вы сможете диагностировать и, возможно, решить проблемы, которые приводят к тому, что PHP-скрипты не исполняются должным образом. Ваша ситуация сложная, требующая внимания к мельчайшим деталям конфигурации сервера и файловой системы. Удачи!

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

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