PHP error_log 来自 CLI
PHP error_log from CLI
我正在使用 CRON 调用 php 脚本。
脚本大量使用了error_log函数:
error_log('My error');
似乎无法从 CLI 运行。
我可以通过使用更多参数使其工作:
error_log('My error', 3, '/fullpath/to/my/log');
但我想避免修改所有内容(我的脚本包含很多其他脚本)。
据我了解,从命令行调用时,PHP 使用不同的 php.ini。
有没有办法强制它使用正常的php.ini?
我需要我的 cron 在与 Web 完全相同的环境中执行此脚本。
是否有我应该注意的问题?其他可能破坏我的代码的差异?
编辑:
我找到了一种方法来告诉 php 使用哪个 php.ini 文件 (-c):
/path/to/php5 -c /path/to/php.ini /path/to/script.php
但它不起作用。
在我的脚本中 shell_exec('php --ini')
仍然显示 cli/php.ini...
如果您需要您的 cron 在与网络 完全相同的环境 中执行此脚本,只需从 网络 调用它:
- 设置虚拟主机(仅限本地,例如在端口 4242 上,用 iptables 锁定)
- 运行 cron 作为
curl http://localhost:4242/script.php
它将运行脚本作为网络服务器用户,使用所有环境变量、配置和日志。
要解决日志记录的确切问题,只需将 stderr
重定向到一个文件:
/path/to/php5 /path/to/script.php 2> /fullpath/to/my/log
第一部分:shell_exec('php --ini')
显示默认 cli/php.ini,因为您使用默认配置启动新进程。要显示自定义配置,请在命令行中指定它
shell_exec('php --ini -c /path/to/php.ini')
或显示当前进程的信息:
phpinfo(INFO_GENERAL)
我正在使用 CRON 调用 php 脚本。
脚本大量使用了error_log函数:
error_log('My error');
似乎无法从 CLI 运行。
我可以通过使用更多参数使其工作:
error_log('My error', 3, '/fullpath/to/my/log');
但我想避免修改所有内容(我的脚本包含很多其他脚本)。
据我了解,从命令行调用时,PHP 使用不同的 php.ini。
有没有办法强制它使用正常的php.ini?
我需要我的 cron 在与 Web 完全相同的环境中执行此脚本。
是否有我应该注意的问题?其他可能破坏我的代码的差异?
编辑:
我找到了一种方法来告诉 php 使用哪个 php.ini 文件 (-c):
/path/to/php5 -c /path/to/php.ini /path/to/script.php
但它不起作用。
在我的脚本中 shell_exec('php --ini')
仍然显示 cli/php.ini...
如果您需要您的 cron 在与网络 完全相同的环境 中执行此脚本,只需从 网络 调用它:
- 设置虚拟主机(仅限本地,例如在端口 4242 上,用 iptables 锁定)
- 运行 cron 作为
curl http://localhost:4242/script.php
它将运行脚本作为网络服务器用户,使用所有环境变量、配置和日志。
要解决日志记录的确切问题,只需将 stderr
重定向到一个文件:
/path/to/php5 /path/to/script.php 2> /fullpath/to/my/log
第一部分:shell_exec('php --ini')
显示默认 cli/php.ini,因为您使用默认配置启动新进程。要显示自定义配置,请在命令行中指定它
shell_exec('php --ini -c /path/to/php.ini')
或显示当前进程的信息:
phpinfo(INFO_GENERAL)