我正在使用 Kohana 框架 (3.0.9),它生成每日日志。如果日志文件是在 CRON 运行脚本的前一天制作的,我想邮寄日志文件,但经过几天的尝试,我无法弄清楚如何在 PHP CLI 模式中推迟 safe_mode。
当我在网络上运行脚本时,没有问题。但我想在 Plesk 9.5.2 服务器上(或以 root 用户身份在命令行上)将脚本作为 CRON 任务运行,但出现以下错误:
ErrorException [ 2 ]:dir():安全模式限制生效。 uid 为 10001 的脚本不允许访问 uid 48 ~ APPPATH/classes/controller/ajax.php 拥有的 /var/www/vhosts/mydomain.com/subdomains/mysubdomain/httpdocs/application/logs/2011/01 [ 181]
我已经在 Plesk 控制面板中关闭了安全模式,该模式对于 Web 请求运行良好,但不能在命令行或作为 CRON 任务运行。
我正在使用以下代码来测试其是否有效:
$d = dir(APPPATH.'logs/2011/01/');
echo "Handle: " . $d->handle . "\n";
echo "Path: " . $d->path . "\n";
while (false !== ($entry = $d->read())) {
echo $entry."\n";
}
$d->close();
我可以读取目录 APPPATH.'logs/',也可以读取目录 APPPATH.'logs/2011',但是该目录代表每个月的每日日志文件总是给出错误。
现在,您可以从 UI 安排 php 脚本执行,如下所示:
如果您仍然需要通过命令行执行脚本,请注意 Plesk 的 PHP 二进制文件位于:
# 7.0
/opt/plesk/php/7.0/bin/php
# 5.6
/opt/plesk/php/5.6/bin/php
# 5.5
/opt/plesk/php/5.5/bin/php
# and so on
原答案:
我知道这已经是几个月前的事了,但对于下一个在使用 Plesk、cron 和 PHP 时遇到问题的人来说,这里是答案。
虽然 Plesk 确实以 ROOT 身份运行 cron,但默认情况下它也会在安全模式开启的情况下运行 PHP,这意味着当您在需要 PHP 的 Plesk 中设置 cron 时,它将受到您在 shell 或 Web 上不会遇到的限制。
因此,您要做的就是使用 CLI /etc/php.ini 选项覆盖,如下所示:
/usr/bin/php -q -d safe_mode=Off /var/www/vhosts/path-to-your-php-file.php
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)