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

247

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

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

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

Примечание: Файл уже называется filename.php

Edit: Код..:

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

Изображение 20

  • 38
    Вы используете короткие теги <? вместо <?php ?
  • 0
    @ kjy112 Если сервер не анализирует файл как PHP, то PHP никогда не вызывается и не может генерировать никаких ошибок. Состояние ошибки не приведет к возможности просмотра исходного кода.
Показать ещё 10 комментариев
Теги:

25 ответов

317
Лучший ответ

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

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

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

  • 12
    Не знаю почему, но установщик PHP 5.3.15 не добавляет строку AddType application/x-httpd-php .php . Большое спасибо!!
  • 0
    Мне нужно ввести упомянутый AddType но файл доступен только для чтения. Как я могу преодолеть это и написать новую строку в это?
Показать ещё 16 комментариев
30

php7:

sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php7.0-fpm
sudo service apache2 restart
  • 11
    Хотя этот фрагмент кода может решить вопрос, в том числе объяснение того, как и почему это решает проблему , действительно поможет улучшить качество вашего сообщения. Помните, что вы отвечаете на вопрос для читателей в будущем, а не только для того, кто спрашивает сейчас! Пожалуйста, отредактируйте свой ответ, чтобы добавить объяснение и указать, какие ограничения и предположения применяются.
  • 2
    Этот ответ связан с linux, тема для стартера явно использует Windows.
Показать ещё 3 комментария
30

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

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

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

21

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>
  • 0
    Просто чтобы помочь другим людям с этим вопросом. Файл httpd.conf находится в /etc/apache2/httpd.conf Если вы используете Ubuntu, это будет apache2.conf в том же каталоге, который необходимо изменить для PHP7.
19

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

15

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

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

php_admin_value engine Off

В случае сомнений прокомментируйте это...

# php_admin_value engine Off

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

  • 0
    Где именно эти настройки конфигурации?
  • 2
    @cronoklee В настройках vHost httpd.conf. Для существующих хостов вам нужно отредактировать конфигурацию apache в webmin. Для будущих хостов перейдите на virtualmin> шаблон сервера> веб-сайт apache. В любом случае, это не так безопасно, как fastcgi - virtualmin по умолчанию. Таким образом, правильный подход должен заключаться в устранении неполадок, почему fcgi не работает, например, это может быть вызвано правами доступа к файлам.
Показать ещё 2 комментария
11

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

  • 1
    Почему mcrypt требуется, когда я просто включаю файл? Вы должны заметить, что этот вопрос старый и проблема с короткими тегами упоминалась 16 раз, также в верхнем комментарии моего вопроса.
  • 1
    Я просто поделился своим решением, я также столкнулся с той же ошибкой, и после выполнения этой команды mcrypt моя проблема решена. Вы также можете попробовать.
Показать ещё 2 комментария
6

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

Убедитесь, что вы пытаетесь выполнить php из

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

а не из

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

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

php info.php 

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

  • 0
    PHP работает нормально (проверено с помощью командной строки). но когда я получаю доступ к файлу с помощью URL, он показывает код PHP.
3

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

  • 1
    вы просто переустановили весь сервер ..
3

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

  • 0
    Это также решило это для меня. Кто-нибудь знает, будет ли сервер выполнять php в файле .html, или окончание файла всегда должно быть изменено на .php, когда нужно выполнить строку php?
  • 0
    зависит от настроек сервера, в большинстве случаев будет выполняться код php, существующий в anyfile.html. и если это не так, его можно изменить, хотя idk как: P
3

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

2

на моем 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
  • 0
    и где я должен добавить эту строку в файле Apache в httpd.conf моего виртуального сервера? и я использую Webmin
2

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

yum list installed | grep remi

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

1

Я столкнулся с этой проблемой на 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>
    
  • 0
    Как то же самое вы можете предложить Wamp 3 версии ту же ошибку. В wamp 3 нет пути к папке /etc/apache2/httpd.conf. @AamirR
  • 0
    Вы используете расширение .php для файла кода? если это так, переименуйте его в .php и проверьте, также проверьте, не содержит ли ваш код short_open_tags <? , если это так, попробуйте изменить на <?php
1

Для новой настройки 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

1

Это было в моем .htaccess

DirectoryIndex index.html index.htm

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

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

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

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

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

"LoadModule php7_module libexec/apache2/libphp7.so"

от

"/Etc/apache2/httpd.conf"

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

0

Просто потратил несколько часов на то, чтобы запустить 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 который, конечно же, необходимо скорректировать.

0

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

<?php

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

0

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

0

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

<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

Меня устраивает

0

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

0

Переустановка модуля mcrypt работала для меня.

$sudo apt-get install php5-mcrypt
$sudo php5enmod mcrypt
  • 0
    Честно говоря, возможно, потому что я не настроил PHP должным образом в моей системе. Но поскольку вопрос, который я задал относительно той же проблемы, был помечен как дубликат этого вопроса, я мог ответить только здесь. Интересно, почему проголосовали против.
  • 0
    Этот ответ связан с Linux, тема для стартера явно использует Windows
0

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

из скриншота u отправил его на компьютер ур, а не на localhost.

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

-1

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

Однако добавив еще одну строку, которая нажимает enter после "

Ещё вопросы

Сообщество Overcoder
Наверх
Меню