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

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

<?php phpinfo(); ?>

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

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

PHP.INI:

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"

20 ответов


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

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


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

sudo apt-get install php libapache2-mod-php
sudo a2enmod mpm_prefork && sudo a2enmod php7.0
sudo service apache2 restart

для 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/


открыть файл

/etc/apache2/httpd.conf

, и

#LoadModule php5_module libexec/apache2/libphp5.so

на

LoadModule php5_module libexec/apache2/libphp5.so

так просто uncoment в PHP загрузить модуль в httpd.conf


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

<IfModule mod_php5.c>
    php_admin_flag engine on
</IfModule>

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


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

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


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

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

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

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

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


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

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


если модуль userdir включен и ваш сайт находится в userdir (~/public_html), вы должны проверить /etc/apache2/mods-enabled/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>

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

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

в моем случае работает отлично.


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

в активном httpd.конф, найти

<IfModule mime_module>
...
</IfModule>

не хватало следующего

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

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


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

a2dismod php7.0
systemctl restart apache2

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


ни один из вышеперечисленных не применялся или не работал для меня... 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


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

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

пример:

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

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

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


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


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


запустите Xampp (apache) как администратор. В google chrome введите:

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

т. е. если созданная вами папка "LearnPhp", файл " chapter1.РНР" введите

localhost/LearnPhp/chapter1.php

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


решение 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

несколько раз, если у вас есть конфликты версий 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