phpinfo() не работает на моем сервере CentOS

У меня установлен PHP на моем сервере CentOS. Однако при запуске phpinfo() внутри моего скрипта для его проверки я получаю HTML, а не интерпретируемую информацию.

Я вижу папки для PHP. Я даже вижу php.ini в папке etc. Но сам PHP, похоже, не работает.

Я имею в виду, что мой файл test.php выглядит так:

<?php
    phpinfo();
?>

И ответ выглядит так:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
<html><head>
<style type="text/css">
body {background-color: #ffffff; color: #000000;}
body, td, th, h1, h2 {font-family: sans-serif;}
pre {margin: 0px; font-family: monospace;}
a:link {color: #000099; text-decoration: none; background-color: #ffffff;}
...

и так далее.

В чем проблема и как ее решить?

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

**Server API    Apache 2.0 Handler
Virtual Directory Support    disabled
Configuration File (php.ini) Path    /etc/php.ini
Scan this dir for additional .ini files    /etc/php.d
additional .ini files parsed    /etc/php.d/dbase.ini, /etc/php.d/json.ini, /etc/php.d/mysql.ini, /etc/php.d/mysqli.ini, /etc/php.d/pdo.ini, /etc/php.d/pdo_mysql.ini, /etc/php.d/pdo_sqlite.ini
PHP API    20041225
PHP Extension    20050922
Zend Extension    220051025
Debug Build    no
Thread Safety    disabled
Zend Memory Manager    enabled
IPv6 Support    enabled
Registered PHP Streams    php, file, http, ftp, compress.bzip2, compress.zlib, https, ftps**

и так далее...

В этой системе размещены три веб-сайта. Это как-то связано с этой проблемой?


person user1137313    schedule 22.07.2013    source источник
comment
Похоже, что PHP работает, и phpinfo() выводит правильный результат. У вас просто могут быть какие-то шаблоны или что-то еще, что мешает и отбрасывает результат.   -  person cHao    schedule 22.07.2013
comment
Этот HTML-код, который вы видите, — это то же самое, что я вижу, когда просматриваю исходный код на странице, на которой нет ничего, кроме <?php phpinfo(); ?>. Это HTML-заголовок информационной страницы PHP.   -  person cHao    schedule 22.07.2013
comment
да. Это код HTML, который обычно возвращается на обычной странице возврата phpinfo. Но это не интерпретируется. Я вижу это, не нажимая кнопку просмотра источника. Что я должен делать?   -  person user1137313    schedule 22.07.2013
comment
Если я правильно помню, php выводит HTML при выполнении phpinfo() внутри скрипта, работающего на веб-сервере. Попробуйте это из командной строки: php -i или запустите свой скрипт из командной строки.   -  person mlewis54    schedule 22.07.2013
comment
Я запустил php -i из командной строки и получил много текста. Похоже на то, что должен вернуть phpini(). Однако, поскольку он не работает из браузера, я склонен полагать, что где-то что-то не так. Как я уже говорил ранее, я знаю, что у меня установлен php, но, похоже, он не работает должным образом.   -  person user1137313    schedule 22.07.2013
comment
Есть ли код, который работает до вашего? Например, передний контроллер / маршрутизатор или что-то еще, установленное в auto_prepend_file?   -  person cHao    schedule 25.07.2013
comment
Была аналогичная проблема (за исключением случаев, когда я открывал html-страницу, она комментировала php-код). Изменение имени файла с index.html на index.php исправило это. Использование apache2 и php7.0   -  person kiwicomb123    schedule 21.12.2017


Ответы (14)


Это случилось и со мной. Исправление заключалось в том, чтобы обернуть его в теги HTML. Затем я сохранил файл как /var/www/html/info.php и запустил http://localhost/info.php в браузере. Вот и все.

<html>
    <body>
        <?php
            phpinfo();
        ?>
    </body>
</html>
person user6204369    schedule 14.04.2016
comment
Использование phpinfo(); вообще не отображает информацию. Чтобы распечатать информацию о конфигурации, вам нужно повторить ее. Так что код будет ‹?php echo phpinfo(); ?› - person Anbuselvan Rocky; 21.10.2017
comment
Я столкнулся с этим после обновления до OSX High Sierra [и php 7]. - person Bret Weinraub; 27.03.2018
comment
@AnbuselvanRocky ошибается. phpinfo() возвращает логическое значение. он выводит информацию. если вы хотите захватить его информацию, используйте буферизацию вывода. phpinfo возвращает false в случае ошибки и true в случае успеха. - person pgee70; 24.08.2018

Сохраните страницу, содержащую

<?php
    phpinfo();
?>

с расширением .php. Что-то вроде info.php, а не info.html...

person Friend    schedule 22.07.2013
comment
Ага. Как я уже говорил выше: ...I mean my test.php file looks like this: <?php phpinfo(); ?> так что, я думаю, это очевидно, имя моего файла test.php - person user1137313; 22.07.2013
comment
Герп. Я сохранял в файл .html, а не в файл .php. Проверьте свои расширения йо! - person Abraham Brookes; 05.03.2019

Вам нужно обновить конфигурацию Apache, чтобы убедиться, что он выводит php в качестве типа text/HTML.

Приведенный ниже код должен работать, но некоторые конфигурации отличаются.

AddHandler php5-script .php
AddType text/html .php
person cmorrissey    schedule 22.07.2013
comment
где я должен запустить этот код? Или я должен добавить эти строки в файл конфигурации? - person user1137313; 22.07.2013
comment
Вы можете добавить его в файл .htaccess или в основную конфигурацию Apache. - person cmorrissey; 22.07.2013
comment
Я добавил код в файл httpd.conf, перезапустил httpd, но ничего не изменилось. - person user1137313; 22.07.2013
comment
Ницца! AddType был для меня последней частью. - person Paul; 04.04.2019

Это сделало это для меня (второй ответ): Почему мои файлы PHP отображаются как обычный текст?

Просто добавив это, больше ничего не работало.

apt-get install libapache2-mod-php5
person Sam Bing    schedule 20.04.2016
comment
Мой не смог найти php5, поэтому вместо него я использовал php7.0: apt-get install libapache2-mod-php7.0. Я использую Linux Mint 18 - person Markus Meskanen; 04.11.2016
comment
apt-get install libapache2-mod-php также будет достаточно - person CordlessWool; 24.10.2018

У меня была такая же проблема, и я обнаружил, что клиент отключил эту функцию в своем файле php.ini:

; This directive allows you to disable certain functions for security reasons.
; It receives a comma-delimited list of function names. This directive is
; *NOT* affected by whether Safe Mode is turned On or Off.
disable_functions = phpinfo;

Дополнительная информация: Включение и отключение phpinfo() по соображениям безопасности

person John Magnolia    schedule 04.09.2014

Попробуйте создать файл php.ini в корне, напишите в нем следующую команду и сохраните его.

disable_functions =

Использование этого кода активирует для вас функцию phpinfo(), если она отключена глобальной конфигурацией PHP.

person Ahmad    schedule 01.04.2016

Убедитесь, что тег «php» вставлен в код следующим образом:

?php phpinfo(); ?>

Не похоже на это:

<сильный>? php phpinfo(); ?>

ИЛИ сервер будет рассматривать его как (обычное слово), поэтому сервер не будет понимать язык, на котором вы пишете, чтобы иметь дело с ним, поэтому оно будет пустым.

Я знаю, что это глупая ошибка... но это случилось ^_^

person Toqero_Mohamed    schedule 08.03.2017
comment
После того, как я выдернул волосы, как сумасшедший, это был ответ! - person Phillip H. Blanton; 12.08.2020

Для людей, у которых нет опыта создания веб-сайтов (таких как я): я много пробовал, только чтобы узнать, что я использовал не расширение .php, а расширение .html.

person pmkruyen    schedule 24.10.2018

Это случилось и со мной. На недавно подготовленном сервере Red Hat Linux 7.

Когда я запускаю PHP-страницу, т. е. info.php, я вижу простые текстовые PHP-скрипты вместо их выполнения.

Я только что установил PHP:

[root@localhost ~]# yum install php

А затем перезапустил HTTP-сервер Apache:

[root@localhost ~]# systemctl restart httpd
person Omari Victor Omosa    schedule 17.11.2017

Мое решение заключалось в удалении и повторной установке экземпляра PHP (в моем случае 7.0):

sudo apt-get purge php7.0
sudo apt-get install php7.0

После этого вам нужно будет перезапустить службу Apache:

sudo service apache2 restart

Наконец, снова проверьте в браузере свой локальный хост или IP-адрес.

person NarcosdaCol    schedule 07.10.2018

Я случайно установил неправильные права доступа к файлу. После chmod 644 phpinfo.php информация действительно появилась, как и ожидалось.

person kghbln    schedule 14.11.2018

Это может не сработать для вас, если вы используете localhost/info.php.

Возможно, вы сможете найти ключ к ошибке. Найдите номер порта в сообщении об ошибке. Для меня это было 80. Я изменил адрес как http://localhost:80/info.php, и тогда это сработало для меня.

person M Kamakshaiah    schedule 04.03.2018

У меня такая же проблема.

В моем случае решением было установить default_mimetype = "text/html" внутри файла php.ini.

person W.M.    schedule 21.12.2014

Другой возможный ответ для Windows 10:

Команда httpd -k restart почему-то не работает на моей машине.

Попробуйте использовать Службу Windows 10 для перезапуска соответствующей службы.

person miehmg    schedule 12.10.2018