У меня странная проблема, и я не могу понять, почему это происходит.Сначала немного предыстории.У меня приложение Symfony 1.4 установлено примерно на 10 производственных серверах.Все они работают под управлением PHP 5.3.0, но я не уверен, что все они настроены одинаково (это зависит от администраторов, и я знаком только с частями файла php.ini).Итак ... Несколько дней назад на одном из серверов появилась странная ошибка.После каждого вызова метода forward в классе действия (единственное, что важно для него для незнакомых людей Symfony, это то, что он что-то делает и выдает sfStopException, который наследует класс sfException): «Неустранимая ошибка: только переменные могут быть переданыссылка "ошибка генерируется.Я искал в Интернете причину, и вот что я нашел - the-stickman.com/web-development/php/php-505-fatal-error-only-variables-can-be-passed-by-ссылка/.Я думаю, что этот пост прекрасно описывает проблему и решение.Пока все нормально - ничего странного ... Пока я не увидел, где была сгенерирована ошибка - ... / lib / vendor / symfony / lib / exception / sfException.class.php в строке 293, которая обозначает этот метод:
/**
* Returns an excerpt of a code file around the given line number.
*
* @param string $file A file path
* @param int $line The selected line number
*
* @return string An HTML string
*/
static protected function fileExcerpt($file, $line)
{
if (is_readable($file))
{
// THIS LINE GENERATES THE ERROR
$content = preg_split('#<br />#', highlight_file($file, true));
$lines = array();
for ($i = max($line - 3, 1), $max = min($line + 3, count($content)); $i <= $max; $i++)
{
$lines[] = '<li'.($i == $line ? ' class="selected"' : '').'>'.$content[$i - 1].'</li>';
}
return '<ol start="'.max($line - 3, 1).'">'.implode("\n", $lines).'</ol>';
}
}
Итак ... имея в виду объяснение, почему возникает этот тип ошибки, я понимаю, в чем проблема, но не могу придумать хорошего решения.Эта часть кода на самом деле не важна для моего приложения - она просто отображает код php-файлов в трассировке стека Symfony (не большая боль, что я не могу увидеть это на одном рабочем сервере, имея в виду, что он не должендаже там не будет)Но единственное решение (быстрое), которое я нашел, это просто прокомментировать часть этого кода.Теперь пользователи могут использовать мое приложение, но это не делает меня счастливым, потому что я не нашел чистого решения (я не люблю взламывать собственное приложение).Итак ... Надеюсь, я достаточно хорошо описал проблему, и кто-то может дать мне хотя бы несколько идей ... Спасибо:).
РЕДАКТИРОВАТЬ: и вот php.ini из двух частей:- часть 1 - http://pastie.org/2733955- часть 2 - http://pastie.org/2733961Я могу вставить больше информации о конфигурации php, но мне нужно знать, что будет интересно - php.ini - единственная конфигурация php, с которой я немного знаком ... Cheers:).