it-roy-ru.com

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"
81
imulsion

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

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

74
Daniel Figueroa

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

Sudo apt-get install php libapache2-mod-php
Sudo a2enmod mpm_prefork && Sudo a2enmod php7.0
Sudo service Apache2 restart
37
helmy

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

25
RyanNerd

открыть файл

/etc/Apache2/httpd.conf

и Правка

#LoadModule php5_module libexec/Apache2/libphp5.so

в

LoadModule php5_module libexec/Apache2/libphp5.so

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

23
inigo333

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

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

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

5
Simon Mohoalali

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

Надеюсь, я помог кому-то там. о / ~ Daniel

3
DAniel

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

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

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

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

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

3
evanmcd

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

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

2
bokistack

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

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

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

<IfModule mime_module>
...
</IfModule>

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

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

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

1
paul

если модуль 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>
1
user906489

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

a2dismod php7.0
systemctl restart Apache2

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

1
djnz0feh

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

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

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

1
Hasan Baig

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

0
mechanic

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

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

0
Torsten Knodt

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

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

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

Шаг 2: ням удалить ** вашу версию PHP **

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

0
sachin_ur

Это происходило со мной также при запуске $ _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
maidenastraea

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

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

то есть, если созданная вами папка «LearnPhp», файл «chapter1.php», введите 

localhost/LearnPhp/chapter1.php

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

0
Aquasar