Как разобрать синтаксис PHP в файле .html на сервере? - PullRequest
2 голосов
/ 04 апреля 2011

Похоже, что это чрезвычайно важный вопрос, но здесь идет ...

У меня есть серия файлов HTML с небольшим количеством содержимого HTML внутри каждого (экспортировано из действующей системы). Изменение расширений файлов невозможно, поскольку я не буду человеком, выполняющим этот процесс «экспорт - запись на компакт-диск», когда я передам свой проект.

Вот пример страницы, она чрезвычайно проста, это "01.html":

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="../css/styles.css" />
<title>Introduction</title>
</head>
<body>
<h1 class="chaptertitle">Introduction</h1>
<div>
    <p>FBT is imposed on non-cash benefits provided to employees in addition to their normal cash salary. The main categories of fringe benefit for Administrator User are:</p>
    <ul>
        <li>The private use, or availability for private use, of an employer’s motor vehicles;</li>
    </ul>
</div>
</body>
</html>

Файлы связаны с главной страницей, в этом отношении все работает нормально, но я уверен, что видел страницы с расширением .html синтаксического анализа PHP, как я могу включить / сделать это? В настоящее время я думал, что смогу выполнить поиск / замену таких вещей, как «Администратор» в приведенном выше примере, на что-то вроде:

<?php echo $CFG->username; ?>

... где эта переменная определена и доступна - но страница анализируется как HTML. В некотором смысле это не удивительно, а в некоторых случаях, как я уже сказал, я уверен, что я видел PHP-код, разобранный в файле с расширением .html.

Он работает в стеке Server2Go (для записи на CD), но во время тестирования он работает в стеке WAMP. Я не могу многое изменить в Server2Go.


Ack! Извините, чтобы уточнить:

Everythign внутри тега <body> извлекается и используется в контексте PHP, страница с именем 'generate_book.php', которая отображает извлеченное содержимое как собственный тег <body> страниц PHP.

Извините, это было несколько важно: P

Ответы [ 4 ]

3 голосов
/ 04 апреля 2011

Ну, я уверен, что вы не очень привыкли к тому, как движки apache работают с php. По правде говоря, это не вопрос php, а apache (в случае, если вы используете apache, что я и предположу)

Самый простой способ сделать это - добавить .htaccess со следующим содержимым:

AddType application/x-httpd-php .php .html

Это в основном говорит apache, что все .html файлы должны быть проанализированы PHP, подробнее об этом здесь .

То, что вы на самом деле видели, я подозреваю, это переписывание URL, подробнее о mod_rewrite .

0 голосов
/ 11 апреля 2011

Я обошел проблему, добавив переменную конфигурации, которая затем используется в вызове замены строки, чтобы заменить сгенерированную при экспорте строку строкой, которую кто-то может обновить в файле конфигурации перед записью на CD. Я могу обойтись без этого, потому что замена строк - это, по сути, единственный PHP в этих файлах HTML. Я закрою этот вопрос после того, как ... оставлю кого-нибудь, чтобы быстро проверить / прочитать о нем.

0 голосов
/ 04 апреля 2011

ModRewrite

RewriteEngine on
RewriteRule ^(.*).html$ $1.php

AddType

AddType application/x-httpd-php .htm .html
0 голосов
/ 04 апреля 2011

Если вы не можете изменить настройки сервера, значит, вы SOL. Вы должны сообщить серверу, что файлы .html должны рассматриваться как сценарии PHP. Там нет никакого способа обойти это. Он волшебным образом не начнет отправлять их через анализатор PHP, если вы не скажете это.

При настройке Apache необходимо напрямую указать конфигурацию, например

AddType application/x-httpd-php .php .htm .html
...