Как включить файл PHP на страницы SHTML?
Вопрос
У меня есть файл shtml index.shtml, в который я хочу включить файл PHP, который выполняет некоторое программирование и возвращает данные HTML.Я пытаюсь включить свой файл PHP, но не знаю, как это сделать. Я пробовал следовать инструкциям, но ничего не работает.
Следующая строка просто печатает ошибку: "[произошла ошибка при обработке этой директивы] ":
<!--#include file="/SSI/test.php"-->
В этой строке отображаются некоторые ненужные символы:
<!--#include virtual="/SSI/test.php"-->
Эта строка ничего не делает и отображает команду так, как она есть на странице .shtml.
<?PHP
include("/SSI/test.php");
?>
Спасибо
Решение
Если нет конкретной причины использования .shtml, кроме упомянутой вами относительно трафика, вы можете изменить его обработку в файле .htaccess:
<Files *.shtml>
ForceType application/x-httpd-php
</Files>
Или вы можете указать этот файл конкретно:
<Files filename.shtml>
ForceType application/x-httpd-php
</Files>
Это заставит сервер анализировать .shtml, как если бы это был файл .php, и, следовательно, любые команды PHP должны обрабатываться, например, ваш оператор включения.Расширение файла менять не нужно.
Другие советы
Я могу ошибаться, но, учитывая полученную вами ошибку, проблема может быть не в операторе включения, а в ошибке во включаемом php-файле, которая и вызывает проблему.
Я не думаю, что вы можете это сделать в Apache (я понятия не имею о других веб-серверах). Документация Apache говорит, что «include_virtual» позволяет включать результаты программы CGI;но PHP не является приложением CGI с точки зрения Apache:это обрабатывается другим модулем и другим способом.
Колин
Чтобы последний работал, просто переименуйте свой .shtml в .php, но учтите, что это остановит работу любого shtml.Но это не должно быть проблемой, если вы также перепишете это на php.
Изменить из вашего комментария:
Если вы запустите Apache, вы можете добавить следующее в свой .htacces, а затем переименовать файл в .php.
redirect permanent filename.shtml filename.php
Это перенаправит людей, посещающих example.com/filename.shtml, на example.com/filename.php.