Запись в php: // stderr

Я пытаюсь использовать php: // stderr для записи журналов на работу. Я использую структуру Slim, которая использует @fopen('php://stderr', 'w') для ведения журнала и действительно хочет, чтобы это работало.

Следующие тестовые примеры должны работать, но только первый:

 // 1. error_log - works fine error_log("Written through the error_log function", 0); // 2. PHP wrapper, ie php://stderr - does not work $stderr = fopen( 'php://stderr', 'w' ); fwrite($stderr, "Written through the PHP error stream" ); fclose($stderr); // 3. PHP wrapper also, different syntax, just to be safe - no effect either file_put_contents( "php://stderr","Hello World" ); // 4. PHP wrapper, this time using this elusive constant referred to in the manual - result: "Notice: Use of undefined constant STDERR - assumed 'STDERR' ", ie: failed also! file_put_contents( STDERR, "Hello World" ); 

Я много раз просматривал руководство по PHP и Googling, но без большой помощи.

В частности, следующая цитата из руководства PHP по оберткам запутанна:

Рекомендуется просто использовать константы STDIN, STDOUT и STDERR вместо ручного открытия потоков, используя эти [ссылки php: // stdin, php: // stdout и php: // stderr] wrappers. "

… учитывая неопределенное постоянное уведомление выше. (Я подозреваю, что эти константы могут использоваться с PHP CLI – только?), Но страница, которую я цитирую, не указала.)

Мне было интересно, может ли это быть Windows, поскольку я запускаю XAMPP с PHP 5.3.8 для разработки, но, учитывая отсутствие тем в Google и комментарии на PHP.net, я уже не так уверен. У меня нет доступа к журналам моего рабочего сервера прямо сейчас, чтобы проверить.

Ничего, получишь. Я не совсем понял разницу между php://stderr и error_log :

error_log записывает в журнал ошибок PHP (например: D: \ xampp \ php \ logs \ php_error_log)

php://stderr записывает в журнал ошибок сервера / Apache (например: D: \ xampp \ apache \ logs \ error.log)

Надеюсь, это поможет кому-то другому.

Если вы просто используете встроенный веб-сервер PHP (начиная с PHP 5.4.0), то php://stderr будет выводиться на экран консоли, на которой запущен встроенный веб-сервер PHP.