3

我正在使用生成每日日志的 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',但该目录代表每个月的每日日志文件总是会出错。

4

2 回答 2

15

现在,您可以像这样从 UI 安排 php 脚本执行:

plesk 计划 cron url 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,这意味着当您在 Plesk 中设置需要 PHP 的 cron 时,它会受到您在 shell 或 Web 中没有体验到的限制.

因此,您要做的是使用 CLI /etc/php.ini 选项覆盖,如下所示:

/usr/bin/php -q -d safe_mode=Off /var/www/vhosts/path-to-your-php-file.php
于 2011-06-21T22:06:30.767 回答
1

您是否在 CLI 的 php.ini 中禁用了 safe_mode?

您可以通过运行以下命令找到此文件的位置php --ini。在此文件中搜索safe_mode并将行更改为safe_mode = Off.

于 2011-01-26T15:11:23.800 回答