PHP-код не выполняется, вместо этого код отображается на странице

Я пытаюсь выполнить некоторый код PHP в проекте (используя Dreamweaver), но код не запускается.

Когда я проверяю исходный код, код PHP появляется в виде HTML-тегов (я вижу его в исходном коде). Apache работает правильно (я работаю с XAMPP), страницы PHP открываются правильно, но код PHP не выполняется.

Есть ли у кого-то предложение о том, что происходит?

Примечание. Файл уже назван как filename.php

Изменить: код..:

<?
include_once("/code/configs.php");
?>

Печать

38 ответов

Решение

Похоже, что с вашей конфигурацией что-то не так, вот несколько вещей, которые вы можете проверить:

  1. Убедитесь, что PHP установлен и работает правильно. Это может звучать глупо, но вы никогда не знаете. Простой способ проверить это запустить php -v из командной строки и посмотреть, если возвращает информацию о версии или каких-либо ошибок.

  2. Убедитесь, что модуль PHP указан и не прокомментирован внутри httpd.conf вашего Apache. Это должно быть что-то вроде LoadModule php5_module "c:/php/php5apache2_2.dll" в файле. Ищи LoadModule phpи убедитесь, что нет комментариев (;) перед ней.

  3. Убедитесь, что файл Apache httpd.conf имеет тип PHP MIME. Это должно быть что-то вроде AddType application/x-httpd-php .php, Это говорит Apache для запуска .php файлы как PHP. Найдите AddType, а затем убедитесь, что есть запись для PHP и что она не закомментирована.

  4. Убедитесь, что ваш файл имеет .php расширение или любое другое расширение, указанное в определении MIME в пункте #3, иначе оно не будет выполняться как PHP.

  5. Убедитесь, что вы не используете короткие теги в файле PHP (<?), они не включены на всех серверах по умолчанию, и их использование не рекомендуется. использование <?php вместо этого (или включите короткие теги в вашем php.ini с помощью short_open_tag=On если у вас есть код, который опирается на них).

  6. Убедитесь, что вы обращаетесь к своему файлу через веб-сервер, используя 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 -ysudo 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 В следующих изменениях помогли:

  1. Раскомментируйте эту строку

    LoadModule php7_module libexec/apache2/libphp7.so
    
  2. Вставьте следующее в конце

    <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 не был загружен. Попробуй это:

  1. Проверьте, какие модули загружены: apache2ctl -M. Ищите модуль вроде php7_module (shared)
  2. Если в списке нет модуля 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
Другие вопросы по тегам