Где php cli регистрирует ошибки на Mac 10.15

#php #macos #command-line-interface

#php #macos #интерфейс командной строки

Вопрос:

Я быстро и грязно разрабатываю локальный скрипт и запускаю его в командной строке. У меня не установлен сервер.

Мой php ini находится в / usr / local / etc /php /7.4 /php.ini

Я активировал журнал ошибок с помощью

 error_reporting = E_ALL
display_errors = On
log_errors = On
error_log = /var/log/php_errors.log
  

Я сохранил изменения, но не нахожу журнал, записанный в /var/log/php_errors.log

Что мне нужно сделать, чтобы мои ошибки регистрировались в файле?

Вывод

 $ php --ini
Configuration File (php.ini) Path: /usr/local/etc/php/7.4
Loaded Configuration File:         /usr/local/etc/php/7.4/php.ini
Scan for additional .ini files in: /usr/local/etc/php/7.4/conf.d
Additional .ini files parsed:      /usr/local/etc/php/7.4/conf.d/ext-opcache.ini


$ which php
/usr/local/bin/php
  

Комментарии:

1. проверьте /var/log/apache2/error.log или /var/log/apache2/access.log

2. @aviboy2006 Я думаю, вы не прочитали весь вопрос. Смотрите предложение 2 I have no server installed

3. Сначала проверьте, что PHP CLI использует этот ini-файл, выполнив php --ini . Это покажет вам путь к Loaded Configuration File:

4. mac поставляется с конфигурацией сервера Apache2 по умолчанию. Я сказал @RiggsFolly проверить, правильно ли вы меняете файл php.ini или нет. Потому что всякий раз, когда команда php cli перезагружает конфигурацию php.ini, изменяется.

5. @aviboy2006 Ах да, но я надеюсь, что в отличие от Windows 10 и IIS он не запускается автоматически, если вы на самом деле не попросите об этом 🙂

Ответ №1:

Насколько я понимаю, php cli выводит ошибки в командную строку почти так же, как скрипт bash. Поэтому вы можете выводить свои ошибки в свой собственный файл журнала таким же образом.

Вот простой файл сценария error_test.php , который который имеет две команды. Первый отображает строку, второй отображает неопределенную переменную, которая создаст ошибку:

 <?php

echo "hellon";
echo $test;
  

запустите скрипт как

 php error_test.php
  

и он выведет следующее:

 hello
PHP Notice:  Undefined variable: test in /home/phi/Projects/sandbox/error_test.php on line 3
  

Подобно сценарию bash, мы можем перенаправить вывод stderr в файл с 2>

 php error_test.php 2> error.log
cat error.log
  

Это заменяет файл журнала при каждом запуске команды. Чтобы добавить ошибки в файл журнала, используйте 2>> .

 php error_test.php 2>> error.log
  

Чтобы игнорировать ошибки, перенаправьте на /dev/null

 php error_test.php 2>> /dev/null