Есть ли способ перенаправить вывод исполняемого скрипта PHP?
Конечно, это тривиально при запуске скрипта из командной строки. Но как это сделать после запускается сценарий?
Примечание: Мне нужно перехватить синтаксические ошибки, а также .
Если вы хотите перехватить ошибки синтаксического анализатора, вам необходимо:
Убедитесь, что display_errors равно On
display_errors
On
Установите error_prepend_string и error_append_string
error_prepend_string
error_append_string
Вызовите ob_start из файла auto_prepend, который запускается перед каждым исполняемым PHP-файлом.
ob_start
Используйте set_error_handler как обычно, и сделайте ваш обратный вызов просеять через именованный выходной буфер, ища ваши пользовательские error_prepend_string и error_append_string. Если вы найдете его, шунтируйте свой выход, где хотите. Если вы этого не сделаете, то отпустите его, где бы он ни был.
set_error_handler
Большая часть этого может быть достигнута с помощью ini_set вызовов, но файл auto_prepend должен быть указан в вашем php.ini.
ini_set
Вы можете использовать PHP управление выводом даже в сценарии командной строки:
echo "123\n"; ob_start(); echo "456\n"; $s = ob_get_contents(); ob_end_clean(); echo "*$s";
Синтаксические ошибки будут выводиться на STDERR, а не на STDOUT. Убедитесь, что вы также перенаправили STDERR в свою линию ...
./myscript | myfile.php &> out.txt
PHP имеет функции ввода / вывода для записи в файл.
http://www.php.net/manual/en/function.fopen.php http://www.php.net/manual/en/function.fwrite.php