Когда я хочу запустить файл 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 может не интерпретироваться.
Чтобы проверить установленные пакеты PHP, введите: dpkg -l | grep php
Чтобы проверить, какие модули apache установлены, введите: a2query -m
. В списке должен быть модуль PHP, и он должен быть включен.
Тебе следует увидеть libapache2-mod-php
перечислен среди пакетов. Это можно было бы назвать libapache2-mod-php7.2
или что-то подобное, соответствующее вашей версии PHP.
Если его нет, вам придется его установить.
grep -r php /etc/apache2/*
.Тебе следует увидеть SetHandler application/x-httpd-php
где-нибудь, и убедитесь, что это не комментируется.