Причиной отображения error_log в консоли, а не в файле журнала, может быть проблема с разрешениями - я действительно не знаю MacOS, но, поскольку он основан на UNIX, я предполагаю, что:
- Файл журнала, используемый Apache, принадлежит конкретному пользователю
- При запуске сценария из консоли вы не являетесь этим пользователем, и у вас нет прав на запись в файл журнала
Если он не может войти в файл журнала, я полагаю, что error_log записывает в стандартный вывод ошибок (stderr), который обычно является консолью.
Этот комментарий на странице руководства, кажется, указывает, что это может быть причиной ваших проблем (цитата):
похоже, что PHP регистрирует в stderr, если он
не могу записать в файл журнала. команда
Линия PHP возвращается к stderr, потому что
файл журнала (обычно) только
доступный для записи веб-сервером.
Кроме того, убедитесь, что log_errors
и display_errors
правильно настроены в файле php.ini, используемом в CLI:
log_errors логический
Сообщает, есть ли сообщения об ошибках скрипта
должен быть зарегистрирован к ошибке сервера
журнал или error_log. Эта опция, таким образом,
конкретный сервер.
И:
display_errors string
Это определяет, должны ли ошибки
быть напечатанным на экране как часть
вывод или если они должны быть скрыты
от пользователя.
Значение "stderr" отправляет ошибки
stderr вместо stdout.