PHP-код не выполняется, вместо этого код отображается на странице
Я пытаюсь выполнить некоторый PHP-код в проекте (используя Dreamweaver), но код не запускается.
Когда я проверяю исходный код, PHP-код отображается как HTML-теги (я вижу его в исходном коде). Apache работает правильно (я работаю с XAMPP), страницы PHP открываются должным образом, но код PHP не выполняется.
Есть ли у кого-то предложение о том, что происходит?
Примечание: Файл уже называется filename.php
Edit:
Код..:
<?
include_once("/code/configs.php");
?>
Ответы
Ответ 1
Похоже, что что-то не так с вашей конфигурацией, вот несколько вещей, которые вы можете проверить:
-
Убедитесь, что PHP установлен и работает правильно. Это может показаться глупым, но вы никогда не знаете. Простой способ проверить - запустить php -v
из командной строки и посмотреть, возвращает ли информация о версии или какие-либо ошибки.
-
Убедитесь, что модуль PHP указан и раскомментирован внутри вашего Apache httpd.conf. Это должно быть что-то вроде 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 для дальнейших советов по настройке.
Ответ 2
php7:
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php7.0-fpm
sudo service apache2 restart
Ответ 3
Я запускаю Apache на Ubuntu, и моя проблема заключалась в том, что файл /etc/apache2/mods-available/php5.conf
отсутствовал:
<FilesMatch ".+\.ph(p[345]?|t|tml)$">
SetHandler application/x-httpd-php
</FilesMatch>
Я добавил его обратно, и php правильно проанализировал php файлы.
Ответ 4
note для пользователей 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>
Ответ 5
Я нашел еще одну проблему, вызвавшую эту проблему, и уже решил ее. Я случайно сохранил мою script в UTF-16
кодировку. Похоже, что PHP5 не может распознать тег <?php
в 16-битном кодировании по умолчанию.
Ответ 6
Я отправляю этот ответ, потому что мой интерфейс администратора Virtualmin/Webmin решил, что было бы неплохо отключить мой PHP-движок. Мне потребовалось некоторое время, чтобы найти решение, поэтому я решил поделиться с вами ребятами:
Кроме того, не забудьте проверить, что ни один из ваших конфигурационных файлов вашего сайта, связанных с этим конкретным хостом или виртуальным хостом, не имеет в них php_admin_value, которые отключают PHP, например:
php_admin_value engine Off
В случае сомнений прокомментируйте это...
# php_admin_value engine Off
И перезагрузите веб-сервер.
Ответ 7
Вы просто открываете свой php файл в браузер. Вы должны открыть его, используя локальный 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.
Ответ 8
Я знаю, что это должно звучать глупо... но редко бывает.
Убедитесь, что вы пытаетесь выполнить php из
**http://localhost/info.php**
а не из
file:///var/www/info.php
ps > вы можете заметить, что если вы пишете из оболочки
php info.php
он отвечает кодом (это означает php-функции).
Ответ 9
Это случилось со мной снова, вместе с сервером, загружающим 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. О, хорошо.
Ответ 10
Я решил это, удалив XAMPP и установив WAMP.
Спасибо за помощь.
Ответ 11
на моем ubuntu 14.04, apache 2.4, php 5.5.9 install, я попробовал с sample.php on/var/www/html (root по умолчанию), и он работал нормально.
Таким образом, проблема была в моей конфигурации виртуальных серверов.
Решение заключалось в том, чтобы включить в директорию def, содержащую .php, следующую строку:
php_admin_flag engine on
Ответ 12
Я столкнулся с этой проблемой на 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>
Ответ 13
Проверьте все пакеты, которые вы установили для php, используя:
yum list installed | grep remi
Установите все соответствующие пакеты php, особенно php-devel на вашем компьютере.
Ответ 14
У меня была аналогичная проблема, но в моем случае решение было другим.
мой файл, который содержал php-код, назывался "somename.html"
изменил его на "somename.php" работал отлично
Ответ 15
Это было в моем .htaccess
DirectoryIndex index.html index.htm
index.html содержит PHP-код. По умолчанию PHP не будет обрабатывать файлы с расширениями, такими как htm *, как PHP-код.
Вы можете переопределить это, добавив следующее в .htaccess:
<FilesMatch ".+\.html$">
SetHandler application/x-httpd-php
</FilesMatch>
Ответ 16
Для новой настройки 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
Ответ 17
Убедитесь, что скрипт содержит
<?php
перед кодом, который должен быть выполнен. Между <?
и php
в этом.
Ответ 18
Я думаю, что проблема в том, что он показывает код вместо результата, заключается в том, что он не будет локальным хостом. перепроверьте, к какому адресу вы идите. Идете в локальный каталог файлов или на локальный хост.
из скриншота u отправил его на компьютер ур, а не на localhost.
"file:///" это должен быть "localhost/"
Ответ 19
Переустановка модуля mcrypt
работала для меня.
$sudo apt-get install php5-mcrypt
$sudo php5enmod mcrypt
Ответ 20
У меня был случай, когда я случайно начал разворачивать каталог файлов в корне. Он добавил файл .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 на root.
Ответ 21
Если у вас есть такая конфигурация:
<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
Меня устраивает
Ответ 22
Добавьте AddType application/x-httpd-php.php
в файл httpd.conf, если вы используете Apache 2.4
Ответ 23
Просто потратил несколько часов на то, чтобы запустить 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
который, конечно же, необходимо скорректировать.
Ответ 24
в моем случае (Apache/2.4.34),
после раскола конкретного модуля
"LoadModule php7_module libexec/apache2/libphp7.so"
от
"/Etc/apache2/httpd.conf"
моя проблема исчезла.
Ответ 25
файл, который вы помещаете в /var/www/html/, должен иметь .php forexample example.php, если это пример, он не работает, но если вы измените его на example.php, он будет работать.
Ответ 26
Если мы находимся на одной странице, выполните
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
и сейчас все отлично работает.
Ответ 27
Одна из возможных причин, по которым он не выполняется, заключается в том, что файл содержит только один тег и одну строку
Однако добавив еще одну строку, которая нажимает enter после "