PHP-скрипт не выполняется на сервере Apache

Я только что переустановил Apache и PHP5, но когда я захожу в свой корневой каталог doc, он просто загружает файл "скачать". И когда я пытаюсь documentroot/index.php он просто загружает файл PHP.

У меня установлен PHP, но Apache, похоже, не хочет его выполнять.
Люди предложили добавить строку "Загрузить модуль" в мой httpd.conf но у меня нет этого файла.

Печатание:

sudo apt-get install apache2 php5 libapache2-mod-php5

установит все, что вам нужно, и запустит сервер apache с поддержкой PHP.

Чтобы убедиться, что модуль php загружен, введите:

a2query -m php5

если не включено, то загрузите с помощью:

sudo a2enmod php5

и перезапустите apache:

sudo service apache2 restart

Обновление для php7.x (протестировано на Ubuntu 16.04, 16.10, 18.04, 18.10)

Благодаря комментариям, я обновляю ответ для php7.x.

Устанавливать:

sudo apt-get install apache2 php7.x libapache2-mod-php7.x 

Проверить:

a2query -m php7.x

Загрузка:

sudo a2enmod php7.x

Перезапустить apache:

sudo service apache2 restart

Другой распространенной причиной является то, что короткие теги php <? не включены конфигурацией php.ini по умолчанию, поэтому после обновления или переустановки эта настройка может быть отключена, и код php может зависеть от нее. Попробуйте заменить <? с <?php.

(Кредит)

Ubuntu 16.04 перешел на PHP 7. Эта единственная команда сделает всю работу за вас:

sudo apt-get install apache2 php libapache2-mod-php

Здесь libapache2-mod-php это мета-пакет, который устанавливает libapache2-mod-php7.

Я столкнулся с той же проблемой, но моя конкретная проблема была уникальной. Я работал в каталоге пользователя (используя mod_userdir) - это означает, что вы получаете доступ к моей веб-странице с помощью http://host.name.com /~username/example.php

По умолчанию это отключено в php*.conf в моем каталоге с поддержкой модов. Мне пришлось изменить его, чтобы прокомментировать:

#<IfModule mod_userdir.c>#    <Directory /home/*/public_html>#        php_admin_flag engine Off#    </Directory>#</IfModule>

Это было непросто понять..

Ну, я сомневаюсь, что у кого-то была ЭТА конкретная проблема, но я решил добавить ее, потому что для меня это было озадачивающим, как грубость, и, ВОЗМОЖНО, кто-то делает то же самое. Думаю, никто больше не использует ~/user, кроме меня.

Конечно, после этого вам придется перезапустить apache.

Для людей, которые нашли этот пост в Google почти через 6 лет (и позже!), вы можете столкнуться с этой проблемой с Apache 2 и PHP 7, а также с использованием UserDir модуль.

Другой возможной причиной этой проблемы может быть то, что вы пытаетесь запустить скрипт в "каталоге пользователя" из UserDir модуль. Запуск PHP-скриптов в пользовательских каталогах по умолчанию отключен. Вы столкнетесь с этой проблемой, если сценарий находится в public_html каталог в вашей домашней папке, и вы пытаетесь получить к нему доступ из http://localhost/~your_username.

Чтобы исправить это, откройте /etc/apache2/mods-enabled/php7.2.conf. Вы должны прокомментировать или удалить блок тегов внизу, который гласит

<IfModule mod_userdir.c>    <Directory /home/*/public_html>        php_admin_flag engine Off    </Directory></IfModule>

Открыть php.ini с nano в терминале:

sudo nano /etc/php/php5.6/apache2/php.ini

Затем измените:

short_open_tag = Off

к

short_open_tag = On

Затем сохраните, а затем перезапустите apache2:

sudo systemctl restart apache2

Мой случай был немного другим. Я обновился с Ubuntu 19.04 до 19.10. Во время обновления он установил php 7.3 (где уже был установлен php 7.2). С установленными 2 версиями a2query -m php7.3 вернуть Ни один модуль не соответствует php7.3.

Решение, которое я нашел, было из как установить php-7-3- on-ubuntu.

Чтобы установить PHP 7.0 по умолчанию, выполните

update-alternatives --set php /usr/bin/php7.0

Чтобы установить PHP 7.2 по умолчанию, выполните

update-alternatives --set php /usr/bin/php7.2

Чтобы установить PHP 7.3 по умолчанию, выполните

update-alternatives --set php /usr/bin/php7.3

Прежде чем мы сможем настроить Apache на использование PHP 7.3, нам нужно отключить старую версию PHP 7.0, набрав

a2dismod php7.2

Теперь включите недавно установленную версию PHP 7.3 с помощью следующей команды:

a2enmod php7.3

Перезапустите веб-сервер Apache, чтобы изменения вступили в силу:

sudo systemctl restart apache2