2015-06-27 2 views
2

Вот основной тестовый скрипт, чтобы показать проблему я, имеющий:PHP error_log не вход, когда скрипт выбежала из оболочки

test1.php

<?php 
    error_log('hello'); 
?> 

Это прекрасно работает. Открытие http://exmaple.com/test будет записывать «привет» в /var/log/apache2/error.log.

Теперь у меня есть это, чтобы запустить test.php в фоновом режиме:

test2.php

<?php 
    shell_exec("/usr/bin/php /var/www/test.php > /dev/null 2>/dev/null &"); 
?> 

Я знаю, что stderr перенаправляется /dev/null в этом примере, но Я также пробовал его без > /dev/null 2>/dev/null & и до сих пор не регистрируется.

Я также попробовать установить error_log путь в test.php с помощью ini_set('error_log','/var/log/apache2/error.log');

Есть ли способ, чтобы заставить его правильно войти?

+0

Эй, я только что заметил, что StackOverflow изменил свой логотип ... Это гей-парад? –

+0

Был я пытаюсь сделать шутку на новом логотипе ... И это на самом деле гей-парад ... –

+2

php при выполнении из CLI не регистрируется в файле журнала apaches. Это не имеет смысла и, скорее всего, у него нет разрешения на это. Как правило, существуют отдельные файлы php.ini для режима cli и http server. И обычно php на cli logs to stderr. Который вы не забираете в коде выше. – arkascha

ответ

0

Это работало для меня

<?php 
ini_set('error_log', '/home/user/error.log'); 
error_log('hello'); 

Выход:

[27-Jun-2015 11:20:55 UTC] hello 

Убедитесь, что у вас есть разрешение на запись в файл журнала при запуске сценария из консоли.

Смежные вопросы