Подсветка синтаксиса PHP Trac не работает в Вики


Подсветка синтаксиса для PHP отказывается для работы с вики-страницами в моей установке Trac. Это прекрасно работает при просмотре исходного кода, но не в Вики. Подсветка синтаксиса Javascript, C и Python работает в Вики, но не в PHP. Горе мне.

У меня Trac 0.11.7 установлен на Ubuntu 10.04. Мой веб-сервер Apache 2.2.14.

Я вручную установил пигменты. Не повезло. Я изменил тему пигментов в настройках. Не повезло.

У меня абсолютно 0 ошибок, зарегистрированных в журналах trac и apache. Уровень ведения журнала для Trac установлен на WARNING (и ведение журнала Trac работает - у меня есть другие ошибки с сегодняшнего дня). Firebug также не отображает ошибок при включении всего (за исключением одной несвязанной ошибки CSS "Неизвестное свойство" - moz-непрозрачность").

Просмотр HTML-источника страницы показывает, что код просто выплевывается в виде предварительно отформатированного текста. В нем нет тонны <span>, которые есть у всех других выделенных синтаксисом блоков кода.

Это код, который я использую в Вики:

{{{
#!php
if(true)
{
    echo 'hi';
}
}}}

И вот результат:

<div class="code"><pre><span class="x">if(true)
{
    echo 'hi';
}
</span></pre></div>

Пожалуйста, помогите:-)


Для примера того, что я ожидал бы, вот некоторый JS-код, который работает:

{{{
#!js
if(true)
{
    alert('hi');
}
}}}

И вот результат:

<div class="code"><pre><span class="k">if</span><span class="p">(</span><span class="kc">true</span><span class="p">)</span>
<span class="p">{</span>
    <span class="nx">alert</span><span class="p">(</span><span class="s1">'hi'</span><span class="p">);</span>
<span class="p">}</span>
</pre></div>
Author: Andrew Ensley, 2012-02-17

2 answers

Я полагаю, что вы можете решить эту проблему, включив тег <?php:

{{{
#!php
<?php
if(true)
{
    echo 'hi';
}
}}}

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

 2
Author: FtDRbwLXw6, 2012-02-16 21:27:45

Не знаю, почему это всегда происходит со мной. Конечно, я выясняю это через 5 минут после публикации вопроса.

Проблема заключалась в том, что у меня не было <?php ?> в исходном коде php, поэтому синтаксический маркер обрабатывал его как HTML; точно так же, как синтаксический анализатор PHP.

C, Python и JS не имеют эквивалента, поэтому они, казалось, работали, когда PHP не работал.

Этот код работает:

{{{
#!php
<?php
if(true)
{
    echo 'hi';
}
?>
}}}

Я оставляю этот вопрос здесь на случай, если у кого-то еще возникнет такая же проблема, несмотря на то, как глупо я себя чувствую.

 1
Author: Andrew Ensley, 2012-02-16 21:28:22