PHP-код не выполняется, вместо этого код отображается на странице
Я пытаюсь выполнить некоторый код PHP в проекте (используя Dreamweaver), но код не запускается.
Когда я проверяю исходный код, код PHP появляется в виде HTML-тегов (я вижу его в исходном коде). Apache работает правильно (я работаю с XAMPP), страницы PHP открываются правильно, но код PHP не выполняется.
Есть ли у кого-то предложение о том, что происходит?
Примечание. Файл уже назван как filename.php
Изменить: код..:
<?
include_once("/code/configs.php");
?>
38 ответов
Похоже, что с вашей конфигурацией что-то не так, вот несколько вещей, которые вы можете проверить:
Убедитесь, что PHP установлен и работает правильно. Это может звучать глупо, но вы никогда не знаете. Простой способ проверить это запустить
php -v
из командной строки и посмотреть, если возвращает информацию о версии или каких-либо ошибок.Убедитесь, что модуль PHP указан и не прокомментирован внутри httpd.conf вашего Apache. Это должно быть что-то вроде
LoadModule php5_module "c:/php/php5apache2_2.dll"
в файле. ИщиLoadModule php
и убедитесь, что нет комментариев (;
) перед ней.Убедитесь, что файл Apache httpd.conf имеет тип PHP MIME. Это должно быть что-то вроде
AddType application/x-httpd-php .php
, Это говорит Apache для запуска.php
файлы как PHP. Найдите AddType, а затем убедитесь, что есть запись для PHP и что она не закомментирована.Убедитесь, что ваш файл имеет
.php
расширение или любое другое расширение, указанное в определении MIME в пункте #3, иначе оно не будет выполняться как PHP.Убедитесь, что вы не используете короткие теги в файле PHP (
<?
), они не включены на всех серверах по умолчанию, и их использование не рекомендуется. использование<?php
вместо этого (или включите короткие теги в вашем php.ini с помощьюshort_open_tag=On
если у вас есть код, который опирается на них).Убедитесь, что вы обращаетесь к своему файлу через веб-сервер, используя URL-адрес, например
http://localhost/file.php
не через локальный доступ к файламfile://localhost/www/file.php
И, наконец, проверьте руководство PHP для дальнейших советов по настройке.
php7:
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php7.0-fpm
sudo service apache2 restart
Я использую Apache на Ubuntu, и моя проблема заключалась в том, что /etc/apache2/mods-available/php5.conf
в файле не было этого:
<FilesMatch ".+\.ph(p[345]?|t|tml)$">
SetHandler application/x-httpd-php
</FilesMatch>
Я добавил его обратно и php правильно разбирал php файлы.
Примечание для пользователей php 7, добавьте это в ваш файл httpd.conf:
# PHP 7 specific configuration
<IfModule php7_module>
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>
</IfModule>
О Боже! Я только что увидел ваше изображение снова, вы просто открываете свой php файл в браузер. у вас open использует localhost url. если вы откроете файл прямо из вашего каталога, он не будет выполнять код php в любом случае.
использовать: http://locahost/index.php
или же http:127.0.0.1/index.php
включите короткий код php в вашем случае, вы используете <?
это короткий код php для <?php
по умолчанию короткие коды php отключены.
также используйте: sudo apt-get install php5 libapache2-mod-php5 php5-mcrypt
если вы пользователь Ubuntu.
Я нашел другую проблему, вызывающую эту проблему, и уже решил ее. Я случайно сохранил свой сценарий в UTF-16
кодирование. Кажется, что PHP5 не может распознать <?php
тег в 16-битной кодировке по умолчанию.
Я публикую этот ответ, потому что мой интерфейс администратора Virtualmin/Webmin решил, что было бы неплохо отключить мой PHP-движок. Мне потребовалось некоторое время, чтобы найти решение, поэтому я решил поделиться им с вами, ребята:
Также убедитесь, что ни в одном из файлов конфигурации вашего сайта, относящихся к этому конкретному хосту или виртуальному хосту, нет php_admin_value, которые отключают PHP, например так:
php_admin_value engine Off
Если вы сомневаетесь, прокомментируйте это...
# php_admin_value engine Off
И перезапустите свой веб-сервер.
Это снова случилось со мной, когда сервер загружал HTML-файлы, а не обрабатывал их. Некоторое время я не пользовался веб-сервером apache на компьютере, а Ubuntu обновлялся, как две новые версии с изначально установленной LTS. Теперь есть
$ cat /etc/issue
Ubuntu 16.04 LTS
Так что PHP работал после так:
$ sudo apt-get install lamp-server^
$ sudo a2enmod php7.0
$ sudo service apache2 restart
Веб-сервер теперь разбирает php. Может быть, теперь нужно обновить некоторые сети, так как php7.0 теперь работает там, где он был до запуска php5. Ну что ж.
Я знаю, это должно звучать глупо... но редко это случается.
Проверьте, пытаетесь ли вы запустить php из
**http://localhost/info.php**
а не из
file:///var/www/info.php
ps> вы можете заметить, что если вы пишете из оболочки
php info.php
это ответ с кодом (это означает, что функции PHP)..
Я решил это, удалив XAMPP и установив WAMP. Спасибо за помощь.
Если мы находимся на одной странице, сделайте следующее
sudo apt-get install php -y
sudo apt-get install php-{bcmath,bz2,intl,gd,mbstring,mysql,zip,fpm} -y
Чтобы включить PHP 7.2 FPM в Apache2, выполните следующие действия:
a2enmod proxy_fcgi setenvif
a2enconf php7.2-fpm
обновление 2: Apache загружает файл.php вместо рендеринга
После этого я столкнулся с вышеуказанной проблемой. Есть подобные вопросы, как это.
Я не знаю почему, но это произошло только для моих файлов.php в /var/www/html/
Корневая папка. все было нормально для подкаталогов. (например, wordpress и phpmyadmin работали нормально)
Итак, вот мое решение. Решил включить модуль php. поэтому я выполнил эту команду:
a2enmod php7.2
но у меня есть такие ошибки:
Принимая во внимание зависимость mpm_prefork для php7.2: Принимая во внимание конфликт mpm_event для mpm_prefork: ОШИБКА: Модуль mpm_event включен - невозможно продолжить из-за конфликтов. Его сначала нужно отключить! Учитывая конфликт mpm_worker для mpm_prefork: ОШИБКА: не удалось включить зависимость mpm_prefork для php7.2, прерывание
поэтому я решил отключить mpm, выполнив следующие команды:
sudo a2dismod mpm_prefork
sudo a2dismod mpm_worker
sudo a2dismod mpm_event
затем перезапустите apache:
systemctl restart apache2
затем включите php7.2 (моя установленная версия):
sudo a2enmod php7.2
и щас все работает нормально.
Убедитесь, что скрипт содержит
<?php
перед кодом, который должен быть выполнен. Там не должно быть места между <?
а также php
в этом.
Я столкнулся с этой проблемой на php 7.1, который поставляется с High Sierra (OS X 10.13.5), редактирование /etc/apache2/httpd.conf
В следующих изменениях помогли:
Раскомментируйте эту строку
LoadModule php7_module libexec/apache2/libphp7.so
Вставьте следующее в конце
<IfModule php7_module> AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps <IfModule dir_module> DirectoryIndex index.html index.php </IfModule> </IfModule>
У меня была похожая проблема, но в моем случае решение было другим. мой файл, который содержал php-код, назывался somename.html, изменил его на somename.php.
Другой возможной причиной этой проблемы может быть то, что вы пытаетесь запустить сценарий в "пользовательском каталоге" из 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>
На моем Ubuntu 14.04, apache 2.4, php 5.5.9 установить, я попытался с sample.php в /var/www/html (корень документа по умолчанию), и он работал нормально. Так что проблема была в моей конфигурации виртуальных серверов. Решением было включить в директорию def, содержащую.php, следующую строку:
php_admin_flag engine on
Самый простой способ установить Apache + php7, протестированный с использованием Debian 10:
apt-get update -y
apt-get install apache2 php7.0 libapache2-mod-php -y
sudo service apache2 restart
Проверьте все пакеты, которые вы установили для php, используя:
yum list installed | grep remi
Установите все соответствующие пакеты php, особенно php-devel на вашем компьютере.
Для новой настройки LAMP, работающего с php 7, отредактируйте файл /etc/httpd/conf/httpd.conf Примечание: обязательно сделайте резервную копию для него, прежде чем что-либо менять.
Вставьте это в самом низу файла:
<IfModule php7_module>
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>
Затем найдите LoadModule и вставьте следующую строку:
LoadModule php7_module modules/libphp7.so
Эта строка просто попросит httpd загрузить модуль php 7
Затем перезапустите httpd
В моем случае модуль php не был загружен. Попробуй это:
- Проверьте, какие модули загружены:
apache2ctl -M
. Ищите модуль вродеphp7_module (shared)
- Если в списке нет модуля php, попробуйте загрузить модуль, соответствующий вашей версии php. В моем случае пакет php
libapache2-mod-php7.3
. Так я и сделал:a2enmod php7.3
и проблема была решена.
Добавлять AddType application/x-httpd-php .php
в ваш файл httpd.conf, если вы используете Apache 2.4
Для php7.3.* вы можете попробовать установить эти модули. У меня это сработало.
sudo apt-get install libapache2-mod-php7.3
sudo service apache2 restart
Если у вас есть такая конфигурация:
<VirtualHost *:80>
ServerName example.com
DocumentRoot "/var/www/example.com"
<FilesMatch "\.php$">
SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>
</VirtualHost>
Раскомментируйте следующие строки в вашем httpd.conf
LoadModule proxy_module lib/httpd/modules/mod_proxy.so
LoadModule proxy_fcgi_module lib/httpd/modules/mod_proxy_fcgi.so
Меня устраивает
Попробуйте перезапустить сервер apache. Это была моя ошибка - я забыл перезагрузить сервер после установки php!
service httpd restart
Это было в моем.htaccess
DirectoryIndex index.html index.htm
index.html содержит код PHP. По умолчанию PHP не обрабатывает файлы с такими расширениями, как htm*, как код PHP.
Вы можете переопределить это, добавив следующее в.htaccess:
<FilesMatch ".+\.html$">
SetHandler application/x-httpd-php
</FilesMatch>
Просто потратил часы, пытаясь заставить PHP 5 работать с Apache 2.4 на Windows 10. Наконец для меня это была опечатка в httpd.conf LoadModule
, Обратил внимание на написание и точный путь модуля через последний ответ в этой ветке apachelounge от denny2018. Спасибо!
После двух ночей я обнаружил... Мой каталог был написан
c:
(нижний регистр)
я имел LoadModule php5_module "c:/php/php5apache2.dll"
но правильно для apache 2.4 это:
LoadModule php5_module "C:/php/php5apache2_4.dll"
Так что я тоже пропустил _4
до (для apache 2.4). Полный фрагмент, который работал для меня:
# PHP
LoadModule php5_module "C:/php/php5apache2_4.dll"
AddHandler application/x-httpd-php .php
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
Только что попробовал PHP 7. Там LoadModule
строка в httpd.conf для Apache 2.4 читает
LoadModule php7_module "C:/php/php7apache2_4.dll"
В настоящее время появляется руководство по PHP c:/php/php5apache2.dll
что, конечно, должно быть скорректировано.
У меня был случай, когда я случайно начал распаковывать каталог с файлами в корне. Он добавил файл.htaccess из моей папки с файлами, который будет блокировать все php
# If we know how to do it safely, disable the PHP engine entirely.
<IfModule mod_php5.c>
php_flag engine off
</IfModule>
В итоге проверьте файл.htaccess в корневом каталоге.
Я думаю, что проблема в том, что он показывает код вместо результата в том, что он не собирается на локальный хост. перепроверьте, по какому адресу вы идете. Вы идете в локальный каталог файлов или на локальный хост.
от скриншота, который вы послали, он собирается на ваш компьютер, а не на localhost.
"file: ///" это должно быть "localhost /"
В моем случае (Apache/2.4.34),
после раскомментирования конкретного модуля
"LoadModule php7_module libexec/apache2/libphp7.so"
от
"/Etc/apache2/httpd.conf"
моя проблема исчезла
Переустановка mcrypt
Модуль работал для меня.
$sudo apt-get install php5-mcrypt
$sudo php5enmod mcrypt