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

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

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

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

Примечание: файл уже назван as filename.php

Edit: код..:

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

The print

24 ответов


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

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

  2. убедитесь, что модуль PHP указан и без комментариев внутри вашего Apache файл httpd.конф это должно быть что-то вроде 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 для дальнейших советов по настройке.


Я запускаю Apache на Ubuntu и моя проблема заключалась в том, что /etc/apache2/mods-available/php5.conf файл отсутствовал это:

<FilesMatch ".+\.ph(p[345]?|t|tml)$">
    SetHandler application/x-httpd-php
</FilesMatch>

я добавил его обратно, и php правильно разбирал файлы php.


php7 :

sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php7.0-fpm
sudo service apache2 restart

Я нашел еще одну проблему, вызывающую эту проблему, и уже решил ее. Я случайно сохранил свой скрипт в UTF-16 кодировка. Кажется, что PHP5 не может распознать <?php тег в 16 битной кодировке по умолчанию.


примечание для пользователей 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>

я публикую этот ответ, потому что мой интерфейс администратора Virtualmin/Webmin решил, что это хорошая идея отключить мой PHP-движок.. мне потребовалось некоторое время, чтобы найти решение, поэтому я решил поделиться им с вами, ребята:

кроме того, убедитесь, что ни один из ваших файлов конфигурации веб-сайта, связанных с этим конкретным хостом или virtualhost, не имеет в них php_admin_value, которые отключают PHP, например:

php_admin_value engine Off

Если вы сомневаетесь, комментарий он...

# php_admin_value engine Off

и перезапустите веб-сервер.


О Боже! Я только что видел ваше опубликованное изображение снова, вы просто открываете свой php-файл в браузере. у вас открыт url-адрес localhost. если вы откроете файл непосредственно из своего Каталога, он ни в коем случае не будет выполнять 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.


Я знаю, это должно звучать глупо... но такое случается редко.

Проверьте, пытаетесь ли вы выполнить php из

**http://localhost/info.php**

а не

file:///var/www/info.php

ps> вы можете заметить, что если вы пишете из оболочки

php info.php 

Он отвечает кодом (это означает функции php)..


Я решил это, удалив XAMPP и установив WAMP. Спасибо за помощь.


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


Это случилось со мной снова, вместе с сервером, загружающим 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. О что ж.


на моем ubuntu 14.04, apache 2.4, php 5.5.9 установить, я попытался с образцом.php on/var/www / html (корень документа по умолчанию), и он работал нормально. Итак, проблема была в конфигурации моих виртуальных серверов. Решение состояло в том, чтобы включить в каталог def, содержащий .на PHP эта строка:

    php_admin_flag engine on

проверить все пакеты, которые вы установили для php использование:

yum list installed | grep remi

установить все соответствующие php пакетов, особенно php-devel на своей машине.


Это было в моей .реврайт

DirectoryIndex index.html index.htm
.HTML-код содержится PHP-код. По умолчанию PHP не будет обрабатывать файлы с расширениями, такими как htm*, как PHP-код.

Вы можете изменить это, добавив следующее .реврайт:

<FilesMatch ".+\.html$">
    SetHandler application/x-httpd-php
</FilesMatch>

для новой настройки лампы под управлением php 7 отредактировать файл /и т. д./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 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>
    

Я думаю, что проблема в том, что он показывает код вместо результата, заключается в том, что он не собирается на локальный хост . перепроверьте, по какому адресу вы входите. вы собираетесь в локальный каталог файлов или на локальный хост.

на скриншоте у него собирается УР компьютер не с localhost.

"file:///" это должно быть "localhost/"


переустановить mcrypt модуль работал для меня.

$sudo apt-get install php5-mcrypt
$sudo php5enmod mcrypt

У меня был случай, что я случайно начал untaring каталога мои файлы в корень. Она добавила .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 в корневом каталоге.


Если у вас есть такая конфигурация:

<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

это работает для меня


добавить AddType application/x-httpd-php .php в файле httpd.conf-файл, если вы используете Apache 2.4


убедитесь, что скрипт содержит

<?php

перед кодом, который должен быть выполнен. Не должно быть пространства между <? и php в этом.


просто потратил часы, пытаясь получить PHP 5 для работы с Apache 2.4 В Windows 10. Наконец, для меня это была опечатка в httpd.conf LoadModule. Обратил внимание на написание и точный путь модуля через последний ответ в этом apachelounge поток denny2018. Спасибо!

после двух ночей я обнаружил... Мой справочник был написан c: (нижний регистр)

I had 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 который, конечно, необходимо отрегулировать.


в моем случае (Apache / 2.4.34),

после раскомментирования конкретного модуля

" LoadModule php7_module libexec/apache2 / libphp7.так что"

с

" / etc/apache2 / httpd.conf"

моя проблема исчезла.