Назад | Перейти на главную страницу

Файлы PHP отображаются в виде текста

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

У меня есть VPS в Hostinger. Я установил Ubuntu 18.04 с Webmin и LAMP (устанавливается автоматически).

Проверил установку см. Ниже.

apache2 - v и php -v дает мне: Apache/2.4.29 и PHP 7.2.24-0ubuntu0.18.04.6

Так что вроде все установлено правильно.

Моя папка по умолчанию - / var / www / html / Я не использую короткие теги в моем коде.

Я пытаюсь загрузить файл phpinfo.php с содержимым:

<?php
phpinfo();
?>

И на странице появляется обычный текст.

Если файл начинается с кода html, он правильно отображается, даже с файлом .php. Но часть php не выполняется. например:

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
    <h1>Hello</h1>
  </body>
</html>

<?php
phpinfo();
?>

Визуализация: Привет

Но

<?php
phpinfo();
?>

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
    <h1>Hello</h1>
  </body>
</html>

Отобразите код как простой текст.

Я запускаю команду grep -r php /etc/apache2/* и это весь результат (извините, я новичок в unix, я не уверен, что вижу):

/etc/apache2/conf-available/php7.2-cgi.conf:# application/x-httpd-php                        phtml php
/etc/apache2/conf-available/php7.2-cgi.conf:    SetHandler application/x-httpd-php
/etc/apache2/conf-available/php7.2-cgi.conf:# application/x-httpd-php-source                 phps
/etc/apache2/conf-available/php7.2-cgi.conf:<FilesMatch ".+\.phps$">
/etc/apache2/conf-available/php7.2-cgi.conf:    SetHandler application/x-httpd-php-source
/etc/apache2/conf-available/php7.2-cgi.conf:    # Deny access to raw php sources by default
/etc/apache2/conf-available/php7.2-cgi.conf:# Deny access to files without filename (e.g. '.php')
/etc/apache2/conf-available/php7.2-cgi.conf:#Action application/x-httpd-php /cgi-bin/php7.2
/etc/apache2/conf-available/php7.2-fpm.conf:# Redirect to local php-fpm if mod_php is not available
/etc/apache2/conf-available/php7.2-fpm.conf:<IfModule !mod_php7.c>
/etc/apache2/conf-available/php7.2-fpm.conf:        SetHandler "proxy:unix:/run/php/php7.2-fpm.sock|fcgi://localhost"
/etc/apache2/conf-available/php7.2-fpm.conf:    <FilesMatch ".+\.phps$">
/etc/apache2/conf-available/php7.2-fpm.conf:        # Deny access to raw php sources by default
/etc/apache2/conf-available/php7.2-fpm.conf:    # Deny access to files without filename (e.g. '.php')
/etc/apache2/mods-available/php7.2.load:# Conflicts: php5
/etc/apache2/mods-available/php7.2.load:LoadModule php7_module /usr/lib/apache2/modules/libphp7.2.so
/etc/apache2/mods-available/php7.2.conf:#    SetHandler application/x-httpd-php
/etc/apache2/mods-available/php7.2.conf:<FilesMatch ".+\.phps$">
/etc/apache2/mods-available/php7.2.conf:#    SetHandler application/x-httpd-php-source
/etc/apache2/mods-available/php7.2.conf:    # Deny access to raw php sources by default
/etc/apache2/mods-available/php7.2.conf:# Deny access to files without filename (e.g. '.php')
/etc/apache2/mods-available/php7.2.conf:        php_admin_flag engine Off
/etc/apache2/mods-available/dir.conf:   DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
/etc/apache2/sites-available/default-ssl.conf:      <FilesMatch "\.(cgi|shtml|phtml|php)$">

Указанная вами строка присутствует 2 раза, прокомментировал и нет.

Есть несколько причин, по которым ваш PHP может не интерпретироваться.

  1. Возможно, у вас не установлен или не запущен модуль PHP для Apache.

Чтобы проверить установленные пакеты PHP, введите: dpkg -l | grep php

Чтобы проверить, какие модули apache установлены, введите: a2query -m. В списке должен быть модуль PHP, и он должен быть включен.

Тебе следует увидеть libapache2-mod-php перечислен среди пакетов. Это можно было бы назвать libapache2-mod-php7.2 или что-то подобное, соответствующее вашей версии PHP.

Если его нет, вам придется его установить.

  1. Возможно, потребуется настроить Apache для выполнения файлов .php. Чтобы быстро проверить конфигурацию Apache, введите: grep -r php /etc/apache2/*.

Тебе следует увидеть SetHandler application/x-httpd-php где-нибудь, и убедитесь, что это не комментируется.