我有一个使用 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>
但是,当我在 PHP 中使用 cURL 并启用详细日志记录时,curl_setopt($connection, CURLOPT_VERBOSE, true);
cURL 的输出会进入 Apache 的error.log
日志文件,而不是我上面定义的自定义日志文件。为什么会这样?我如何才能让 cURL 的输出进入正确的日志文件?
答案1
根据对此的一些回答那么问题来了,正如您已经注意到的,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
。