
PHP – это язык, который выполняется на сервере до того, как страница отправляется пользователю. Если PHP-код встроен в обычный .html-файл, сервер обрабатывает его как статический текст и не запускает интерпретатор. В результате вместо выполнения инструкций браузер получает исходный код с тегами <?php … ?>.
Большинство веб-серверов по умолчанию настроены так, что только файлы с расширением .php проходят через обработчик PHP. Для того чтобы код начал выполняться, необходимо либо изменить расширение файла на .php, либо перенастроить сервер (например, с помощью .htaccess в Apache или правил в Nginx).
Даже при правильном расширении файла важно проверить, установлен ли PHP на сервере и включен ли модуль его обработки. Отсутствие интерпретатора или ошибки в конфигурации приведут к тому, что PHP будет игнорироваться. Также нужно удостовериться, что короткие теги <? … ?> разрешены в настройках php.ini, иначе часть кода не выполнится.
Файл сохранён с расширением.html вместо.php

Чтобы сервер обрабатывал PHP-инструкции, файл должен иметь расширение .php. В противном случае интерпретатор не будет вызван.
- Переименуйте файл с
.htmlна.php. - Проверьте ссылки и пути в проекте – измените их так, чтобы они указывали на новое имя файла.
- Убедитесь, что сервер настроен на обработку
.phpфайлов (например, Apache с модулемmod_phpили Nginx сphp-fpm).
Если необходимо сохранять расширение .html, можно изменить конфигурацию сервера:
- В Apache – добавить в
.htaccess:AddType application/x-httpd-php .html. - В Nginx – прописать обработку
.htmlчерез блокlocationс передачей наphp-fpm.
Такая настройка позволяет запускать PHP внутри файлов с расширением .html, но чаще используется стандартный подход – переименование в .php для удобства поддержки и предсказуемости работы.
Веб-сервер не обрабатывает php код в статических файлах

Если PHP-фрагменты помещены в файл с расширением .html или .htm, веб-сервер воспринимает его как статический документ и не передаёт интерпретатору PHP. В результате код отображается как обычный текст.
Основные причины:
- Отсутствует настройка ассоциации расширений
.htmlс модулем PHP. - Файл обрабатывается напрямую сервером без вызова интерпретатора.
- Используется некорректная конфигурация
.htaccessили основного конфигурационного файла.
Способы решения:
- Переименовать файл в
.php, чтобы сервер автоматически передавал его PHP-модулю. - Для Apache добавить в
.htaccessстроку:
AddType application/x-httpd-php .html .htm - Для Nginx использовать директиву
locationи перенаправлять файлы с нужными расширениями наfastcgi_pass. - Убедиться, что PHP установлен и подключён к серверу (модуль
php-fpmилиmod_php).
На практике более надёжно применять расширение .php для всех файлов, содержащих код, чтобы избежать путаницы и лишних настроек.
Отсутствует установленный и запущенный php интерпретатор
Если на сервере или локальной машине не установлен PHP, браузер отобразит php-код как обычный текст, а не выполнит его. Проверить наличие интерпретатора можно командой php -v в терминале. При отсутствии ответа или сообщении об ошибке нужно установить PHP.
На Linux установка выполняется через пакетный менеджер, например sudo apt install php для Ubuntu или sudo dnf install php для Fedora. В Windows чаще используют сборки вроде XAMPP или OpenServer, включающие PHP и веб-сервер Apache. На macOS можно установить PHP через Homebrew командой brew install php.
Наличие интерпретатора недостаточно – он должен быть запущен вместе с веб-сервером. Для проверки работы встроенного сервера можно выполнить php -S localhost:8000 и открыть в браузере http://localhost:8000. Если код не обрабатывается, значит PHP не интегрирован с веб-сервером или сервис не активен.
Чтобы Apache обрабатывал PHP, необходимо подключить модуль libphp и перезапустить службу systemctl restart apache2. Для Nginx требуется связка с PHP-FPM, конфигурация которой указывается в блоке fastcgi_pass. При неправильной настройке сервер будет отдавать исходный код без обработки.
Неверная конфигурация Apache или Nginx для обработки php

Если сервер настроен неправильно, PHP-код будет отображаться как текст вместо выполнения. Для Apache необходимо убедиться, что модуль libapache2-mod-php установлен и активирован. В конфигурационных файлах /etc/apache2/apache2.conf или /etc/apache2/sites-available/000-default.conf должна быть строка AddType application/x-httpd-php .php, а также обработка <FilesMatch \.php$>SetHandler application/x-httpd-php</FilesMatch>.
В Nginx требуется передача запросов к PHP-FPM. В блоке server необходимо наличие директивы location ~ \.php$ {} с указанием fastcgi_pass unix:/run/php/php8.1-fpm.sock; или 127.0.0.1:9000 в зависимости от настроек. Также нужно подключить fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; и include fastcgi_params;.
Ошибки часто связаны с отсутствием или неправильным путем к сокету PHP-FPM, дублирующимися блоками location или неактивированным модулем в Apache. После изменений конфигурации требуется перезапуск соответствующего сервиса: systemctl restart apache2 или systemctl restart nginx php8.1-fpm.
Ошибки синтаксиса в php коде внутри html
Частая причина отказа php-кода – пропущенные символы. Например, отсутствие точки с запятой ; после инструкции вызывает фатальную ошибку и прерывает выполнение всей страницы.
Некорректное использование кавычек также приводит к сбоям. При открытии строки двойными кавычками и закрытии одинарными PHP не сможет интерпретировать код.
Неправильное размещение фигурных скобок { } в условных конструкциях или циклах нарушает структуру кода. Даже один лишний или пропущенный символ делает блок неработоспособным.
Вложенный php-код внутри html требует правильного открытия и закрытия тегов: <?php … ?>. Пропуск закрывающего тега или его размещение внутри строки HTML ломает страницу.
При использовании переменных важно учитывать регистр символов. В PHP переменная $User и $user считаются разными, что часто становится причиной неожиданных ошибок.
Для диагностики синтаксических ошибок включайте error_reporting(E_ALL); и display_errors в настройках. Это позволит сразу увидеть точное место сбоя и строку с проблемой.
Использование устаревших или отключённых php тегов
Короткие теги <? ?> по умолчанию могут быть отключены через директиву short_open_tag в php.ini. При попытке выполнить такой код браузер просто отобразит его как текст, что создаёт впечатление «неработающего» PHP.
ASP-подобные теги <% %> устарели и начиная с PHP 7 полностью удалены. Любая попытка использовать их вызовет синтаксическую ошибку.
Ниже приведена таблица поддержки тегов в разных версиях PHP:
| Тип тега | Поддержка по умолчанию | Комментарии |
|---|---|---|
| <?php ?> | Полная | Рекомендуется для любого кода |
| <?= ?> | Полная | |
| <? ?> | Зависит от short_open_tag |
Может быть отключён, не использовать в новых проектах |
| <% %> | Удалён с PHP 7 | Полностью устарел, избегать |
Проверка текущих настроек сервера осуществляется через phpinfo(). Если короткие теги отключены, их нужно либо включить в php.ini, либо заменить на <?php ?>.
Нарушение этих правил является частой причиной того, что PHP-код внутри HTML не выполняется, хотя файл имеет расширение .php.
Вопрос-ответ:
Почему мой PHP код внутри файла с расширением .html не выполняется?
Файл с расширением .html обычно обрабатывается веб-сервером как статический документ. PHP же обрабатывается только в файлах с расширением .php или других, настроенных для обработки PHP. Если вы вставляете PHP код в .html, сервер не отправит его на интерпретатор, и код просто отобразится как текст или игнорируется.
Можно ли настроить сервер так, чтобы PHP выполнялся в HTML файлах?
Да, это возможно через конфигурацию веб-сервера. Например, для Apache можно добавить правило в файл .htaccess: AddType application/x-httpd-php .html. Это заставит сервер обрабатывать файлы .html через интерпретатор PHP, но стоит помнить, что это может замедлить загрузку страниц, если таких файлов много.
Почему в браузере вместо результата PHP кода я вижу сам код?
Такое происходит, когда сервер не выполняет PHP. Браузер не обрабатывает PHP, он получает только готовый HTML. Если сервер не отправляет код на интерпретатор, он попадает в ответ как обычный текст. Чтобы исправить это, нужно использовать файлы с правильным расширением или настроить сервер для обработки PHP в HTML.
Могу ли я вставлять PHP прямо в HTML с расширением .php?
Да, файлы с расширением .php могут содержать HTML и PHP одновременно. Сервер будет обрабатывать PHP код и вставлять его результат в HTML перед отправкой страницы браузеру. Главное — использовать правильные PHP теги: <?php ... ?>.
Что делать, если PHP код не выполняется, хотя файл имеет расширение .php?
В этом случае стоит проверить несколько вещей: включен ли PHP на сервере, правильно ли настроен интерпретатор, нет ли синтаксических ошибок в коде и находятся ли теги PHP в правильном формате. Иногда причина может быть в настройках хостинга, которые запрещают выполнение PHP в определённых папках.
