PHP Zend Framework: внутренняя ошибка сервера 500 на локальном хосте при попытке запустить «Lucene.php» в браузере - PullRequest
0 голосов
/ 07 июня 2011

Я использую Windows 7, и у меня новая версия Zend Framework. В новом php-файле под названием «search.php» я пытаюсь создать поисковое приложение, используя Zend_Search_Lucene с первой строкой:

<?php require_once "C:...\Zend\Search\Lucene.php";?>

Когда я запускаю этот код, я вижу в браузере внутреннюю ошибку сервера 500 ... Затем я обнаружил, что я получаю эту ошибку всякий раз, когда пытаюсь запустить некоторые файлы в библиотеке Zend, и именно это вызвало ошибку Я упомянул ... ОШИБКА 500 на localhost / Zend / Search / Lucene.php, localhost / Zend ... / blabla.php ..

Однако некоторые файлы не отображали эту ошибку 500 сервера при запуске в браузере. то есть: localhost / Zend / ProgressBar.php показывает пустую страницу, что хорошо, так как я предполагаю, что в коде нет никаких «эхо». На самом деле это то, что я ожидал, когда запустил lucene.php в браузере ...

Может кто-нибудь испытал, дайте мне знать, как это может произойти? Почему я получаю внутреннюю ошибку сервера вместо исключения? Как проверить, правильно ли работает мое поисковое приложение, использующее файл "Lucene.php", независимо от этой внутренней ошибки 500 сервера? спасибо.

Ответы [ 4 ]

4 голосов
/ 07 июня 2011

Попробуйте включить отчеты об ошибках:

на лету

ini_set('display_errors', 1);
error_reporting(E_ALL);

в php.ini (возможно, разные для php иcli)

error_reporting = E_ALL
display_errors = 1

Для получения дополнительной информации см .:

1 голос
/ 07 июня 2011

Я наконец-то решил проблему :) После просмотра следов ошибок внутренняя ошибка сервера связана с тем, что код <?php require_once "C:...\Zend\Search\Lucene.php";?> пытается получить доступ к определенному коду внутри "Lucene.php", который содержит относительный путь к библиотеке Zend.папка = require_once('Zend\Search\Document\...'); и сервер не знает путь к файлу.Что нужно было исправить, так это на самом деле мой файл php.ini, в include_path я добавил ;C:\php5\pear;C:\Server\www\.....\ZendFramework\library .. Теперь вместо внутренней ошибки сервера отображается пустая страница.

+ 1 @Arend: Функция сообщения об ошибках:действительно полезно!спасибо

0 голосов
/ 07 июня 2011

Поскольку я не могу комментировать ответы, я повторно использую код Маерлина:

require_once 'Zend/Loader.php';
Zend_Loader::registerAutoload();

self::$zendLoaded = true; не может работать, поскольку self не определена для нее.

Согласно документации ZF, если ваш путь задан правильно, этих двух строк должно быть достаточно.

0 голосов
/ 07 июня 2011

Код Zend опирается на их автозагрузчик.Вы получаете ошибку, поскольку вы не инициализируете ее, затем в Zend_Search_Lucene она пытается создать несуществующий класс.

Это должно сработать:

require_once 'Zend/Loader.php';
Zend_Loader::registerAutoload();
self::$zendLoaded = true;
...