Как отловить ошибку сценария PHP, которая умирает (Perl имеет eval)? - PullRequest
0 голосов
/ 15 декабря 2009

У меня есть скрипт, который отлично работает на нашем сервере разработки, но умирает на клиентском сервере.

error_reporting(E_ALL);
if (function_exists('simplexml_load_file')) echo "function exists";
if (file_exists('test.xml'))
{
echo("<hr>just about to read local xml file :".__LINE__); 
$xml = simplexml_load_file('test.xml');   // dies here

В Perl вы можете отлавливать такие ошибки с помощью eval, есть ли что-нибудь эквивалентное в PHP?

Ответы [ 2 ]

0 голосов
/ 15 декабря 2009

Сисадмин: - Я кратко включил подробные отчеты об ошибках, и он вернулся с этим:

Неустранимая ошибка: невозможно клонировать объект класса SimpleXMLElement из-за 'zend.ze1_compatibility_mode' в

http://archives.devshed.com/forums/php-108/simplexml-problem-982459.html

Эта конфигурация может быть переопределена для каждого сайта с помощью Директива файла .htaccess http://www.activecollab.com/forums/topic/616/

это решило проблему. Но почему я не могу включить этот уровень отчетов об ошибках из своего скрипта?

0 голосов
/ 15 декабря 2009

Зависит от способа сбоя функции.

В случае simplexml_load_file() информация об ошибке хорошо документирована

При ошибках возвращается FALSE.

и

Создает сообщение об ошибке E_WARNING для каждой ошибки, найденной в данных XML.

и

Совет

Используйте libxml_use_internal_errors() для подавить все ошибки XML и libxml_get_errors() для перебора их потом.

И, вы всегда можете установить свой собственный обработчик ошибок или использовать (10) * оператор подавления ошибок *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...