Назад | Перейти на главную страницу

Как сделать так, чтобы ошибки cURL попадали в правильный файл журнала?

У меня есть веб-сайт, работающий с использованием Apache 2.2.22, PHP 5.3.10 и cURL 7.2.00. Соответствующие части конфигурации apache приведены ниже, и вы заметите, что ошибки отправляются на www.example.com_error.log.

<VirtualHost *:443>
    ServerName example.com
    ServerAlias www.example.com

    # *snip*

    ErrorLog ${APACHE_LOG_DIR}/example.com_error.log
    LogLevel warn
    CustomLog ${APACHE_LOG_DIR}/example.com_access.log combined
</VirtualHost>

Однако, когда я использую cURL из PHP и включаю подробный вход, используя curl_setopt($connection, CURLOPT_VERBOSE, true); вывод cURL попадает в Apache error.log вместо пользовательского файла журнала, определенного выше. Почему это так и как я могу получить вывод cURL в правильный файл журнала?

За несколько ответов на это ТАК вопрос, php записывается в журнал сервера Apache по умолчанию (error.log), как вы уже заметили. Вы можете установить следующие настройки журнала php:

<VirtualHost *:443>
    ServerName example.com
    ServerAlias www.example.com

    # *snip*

    ErrorLog ${APACHE_LOG_DIR}/example.com_error.log
    LogLevel warn
    CustomLog ${APACHE_LOG_DIR}/example.com_access.log combined

    php_flag log_errors on
    php_flag display_errors on
    php_value error_reporting 2147483647
    php_value error_log ${APACHE_LOG_DIR}/php.error.log
</VirtualHost>

В качестве альтернативы в одном из ответов на этот вопрос SO упоминалось, что отключение error_log полностью в php.ini для входа в журналы соответствующего виртуального хоста, например example.com_error.log.

В соответствии с документация по curl, Вы можете установить местоположение файла журнала с помощью CURLOPT_STDERR.

См. Полный пример в этом ответ