Apache показывает php-код вместо выполнения


Недавно я пытался установить php и apache на свой компьютер. Через много часов они будут установлены. Я изменил файлы httpd.conf и php.ini, как все говорят. Затем я создал простой php-скрипт:

<?php phpinfo(); ?>

Но когда я пытаюсь запустить его с помощью http://127.0.0.1/phpinfo.php, он просто показывает исходный код вместо выполнения. Я использую apache2, php5 и Windows vista. Я безуспешно искал по всему Интернету и почти бьюсь головой о стену. Может ли кто-нибудь спасти меня от сотрясения мозга?

ОТРЕДАКТИРОВАННЫЕ СТРОКИ:

PHP.ИНИ:

short_open_tag = On

HTTPD.CONF

LoadModule php5_module "C:/php/php5apache2_2.dll"
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
PHPIniDir "C:/php"
 72
Author: imulsion, 2012-08-27

20 answers

Вы должны включить php! Проверьте папку mods-enabled в каталоге Apache (по умолчанию: /etc/apache2/), чтобы узнать, есть ли файл с именем php. Я не помню добавочный номер, но я думаю, что это .so.

Также проверьте var/log/apache2/error.log, чтобы узнать, есть ли у вас какие-либо ошибки.

 67
Author: Daniel Figueroa, 2017-03-07 12:32:53

Вау, здесь много решений! Вот что я сделал на Ubuntu 16.04:

sudo apt-get install php libapache2-mod-php
sudo a2enmod mpm_prefork && sudo a2enmod php7.0
sudo service apache2 restart
 35
Author: helmy, 2017-04-28 18:32:08

Для PHP 7 (Может применяться и к предыдущим версиям), но я должен был сделать это:

Добавьте это в конец файла /etc/apache2/apache2.conf

<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>

Запустите это с терминала:

sudo a2dismod mpm_event && sudo a2enmod mpm_prefork && sudo a2enmod php7

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

sudo service apache2 restart

Это краткое изложение из: https://www.atlantic.net/community/howto/try-php7-lamp-ubuntu-14-04/

 24
Author: RyanNerd, 2016-05-31 16:39:00

Откройте файл

/etc/apache2/httpd.conf

И изменить

#LoadModule php5_module libexec/apache2/libphp5.so

В

LoadModule php5_module libexec/apache2/libphp5.so

Так что просто раскомментируйте загрузку модуля PHP в httpd.conf

 22
Author: inigo333, 2014-01-29 19:20:24

Я нашел это, чтобы решить связанную с этим проблему. Я добавил его в соответствующий раздел <Directory>:

<IfModule mod_php5.c>
    php_admin_flag engine on
</IfModule>
 5
Author: Pawel, 2017-04-13 12:22:38

Другой ответ, который сработал для меня. Заключается в том, чтобы установить [sudo] apt-get install libapache2-mod-php5.X

 5
Author: Simon Mohoalali, 2016-05-12 09:43:26

Хорошо, если вы попробовали то, что вам было сказано выше или ранее (что является возможными причинами), и он по-прежнему отображает код вместо его выполнения, то есть одна вещь, которую вы делаете неправильно, которая не была решена. URL, который вы использовали для доступа к своему php-коду; некоторые люди пытаются выполнить свой php-код, просто перетащив файл .php в веб-браузер. это неправильная практика и может привести к такого рода проблемам. если вы сохранили файл как"test.php "в C://wamp/www папка, то вы должны получить доступ к этому файлу таким образом: localhost://test.php . такого рода ошибка возникнет, когда вы получите доступ к нему таким образом: localhost://wamp/www/test.php

Надеюсь, я кому-то там помог.o/ ~Дэниел

 3
Author: DAniel, 2014-07-23 09:32:48

Публикация того, что сработало для меня, на случай, если это поможет кому-то в будущем, хотя это необычный случай.

Я установил обработчик, чтобы заставить мой веб-хост использовать более высокую версию php, чем по умолчанию. Там было 5.1, но я хотел 5.6, поэтому у меня было вот это:

<FilesMatch \.php$>
    SetHandler php56-cgi
</FilesMatch>

В моем файле .htaccess.

При попытке запустить мой сайт локально, наличие этого там привело к выводу php-кода в браузер. Удаление его решило проблему.

 3
Author: evanmcd, 2017-11-17 04:18:36

Вы можете удалить свой файл .htaceess и позволить системе создать новый (пустой или базовый). Возможно, некоторые добавленные вами строки являются неверными утверждениями, или проблема вызвана чем-то другим внутри. Затем вы можете добавить строку за строкой из вашего старого файла .htaccess, чтобы узнать, что вызвало проблему.

Это сработало для меня. Строки, указывающие машине не отображать расширения php, были проблемой в моем случае (пЕрезапиСать секунду и пЕрезапиСать ). Мой старый .htaccess файл отлично работал на общем сервере, но эта проблема возникла, когда я переключился на VPS.

 2
Author: bokistack, 2015-09-16 01:37:28

Если включен каталог пользователей модуля и ваш сайт находится в каталоге пользователей (~/public_html), вы должны проверить/etc/apache2/с поддержкой модов/php5.conf. Следующая часть заставляет его работать (в Ubuntu 14.10 utopic):

# Running PHP scripts in user directories is disabled by default
# 
# To re-enable PHP in user directories comment the following lines
# (from <IfModule ...> to </IfModule>.) Do NOT set it to On as it
# prevents .htaccess files from disabling it.

# <IfModule mod_userdir.c>
#     <Directory /home/*/public_html>
#        php_admin_flag engine Off
#    </Directory>
# </IfModule>
 1
Author: user906489, 2015-03-07 20:11:47

Если вы являетесь пользователем ubuntu, после установки apache необходимо выполнить следующую команду при новой установке

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

В моем случае работает нормально.

 1
Author: Hasan Baig, 2016-12-06 13:03:05

Что сработало для меня:

В активном файле httpd.conf найдите

<IfModule mime_module>
...
</IfModule>

В нем отсутствовало следующее

AddType application/x-httpd-php .php
AddHandler application/x-httpd-php .php

После перезапуска apache файлы .php анализируются правильно.

 1
Author: paul, 2017-04-08 15:39:46

Спасибо другим участникам этой темы за их предложения. Следуя указанным шагам, я обнаружил, что сервер apache не смог начать сообщать о синтаксической ошибке в файле load в /etc/apache2/mods-enabled. Оказывается, и php7.0, и php7.1 были включены.

a2dismod php7.0
systemctl restart apache2

И php снова отображается правильно.

 1
Author: djnz0feh, 2018-02-22 10:17:45

Ничто из вышеперечисленного не применялось и не работало для меня... PHP7, Apache Httpd 2.2 на CentOS 6

Факт в том, что я установил (все с yum) php ДО Apache... вы должны сделать обратное: всегда сначала устанавливайте Apache, затем PHP, и тогда он будет работать... Действительно, вы, вероятно, пропускаете libphp7.so и libphp7-zts.so в /etc/httpd/modules/

Я все равно смог восстановиться без удаления PHP. Я действительно добавил волшебную строку в /etc/httpd/conf/httpd.conf: AddType application/x-httpd-php .php А потом беги: yum install php php-mysql

 1
Author: berhauz, 2018-07-30 18:46:18

Это происходило и со мной, когда я запускал $_POST в MAMP. Все мои файлы .ini и httpd были настроены правильно. Если вы выполняете обработку форм и у вас есть html-документ и отправляете информацию в php-обработчик форм с $POST, убедитесь, что вы запускаете html-файл с локального хоста через свой сервер, а не только локально.

Это был ярлык, который я использовал для запуска html-документов, просто щелкнув html-файл в моем каталоге и запустив его в своем веб-браузере, когда в реальность чтобы проверить, обрабатывается ли php в вашей форме, вы должны запустить свой html через свои серверы. Очень простой протокол, который я упустил из виду.

Пример:

Неправильно: file:///Applications/MAMP/htdocs/form/form.html

Правильно: http://localhost:your port number/form/form.html

Теперь php должен быть обработан, как только вы нажмете кнопку отправки

 0
Author: maidenastraea, 2015-09-19 17:47:43

У меня была та же проблема, вызванная конфигурацией модуля Debian/Ubuntu по умолчанию suphp. Он содержал suPHP_Engine off для всего /usr/share, что привело к отображению источников php в браузере. Деактивация с помощью a2dismod suphp была промежуточным решением.

 0
Author: Torsten Knodt, 2016-07-10 11:20:37

У меня была та же проблема. Когда я запускаю php-файл, веб-браузер показывает мне php-код вместо его выполнения. Я много раз пытался: удалить/переустановить wampserver64, обойти настройки/модули PHP/Apache и т.д. Через 2 дня: Я понял это, когда попытался запустить php-файл в notepad++, нажав комбинацию по умолчанию "ctrl + alt + shift + R" для chrome. Он пытался выполнить мой php-файл, например: "файл///C:/wamp64/www/bla/bla.." в адресной строке моего chrome. Это была моя проблема. Я внес изменения в соответствии со страницей Настройка Notepad++ для запуска php на локальном хосте?. Моя проблема была решена. Но через 2 дня..

 0
Author: mechanic, 2017-05-23 12:02:47

Запустите Xampp (apache) от имени администратора. В Google Chrome введите:

localhost/<insert folder name here>/<insert file name>

Т.е. если созданная вами папка "LEARNPHP", файл "chapter1.php "затем введите

localhost/LearnPhp/chapter1.php

Я создал эту папку в папке xampp в папке htdocs, которая создается при загрузке xampp.

 0
Author: Halex, 2017-03-15 21:23:21

Решение Debian 9:

touch /etc/apache2/conf-available/php.conf 

Добавить в файл следующие строки:

<IfModule mod_php5.c>
    <IfModule mod_mime.c>
        AddType application/x-httpd-php .php
    </IfModule>
    <FilesMatch ".+\.php$">
        SetHandler application/x-httpd-php
    </FilesMatch>
</IfModule>
<IfModule mod_php.c>
    <IfModule mod_mime.c>
        AddType application/x-httpd-php .php
    </IfModule>
    <FilesMatch ".+\.php$">
        SetHandler application/x-httpd-php
    </FilesMatch>
</IfModule>

Затем запустите:

a2enconf php && service apache2 restart
 0
Author: mrDinkelman, 2018-01-17 15:09:00

Иногда, если у вас возникают конфликты версий php, это случается Чтобы преодолеть это, пожалуйста, выполните следующие действия

Шаг 1: Установлен список Yum |grep 'php'

Если у вас несколько версий php, таких как php 5.6 и php 7.0, этот конфликт произойдет

Шаг 2: yum удалите **вашу версию php**

Шаг 3: Затем перезапустите apapche /etc/init.d/httpd restart или service apache2 restart

 0
Author: sachin_ur, 2018-08-28 06:05:16