You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Plesk 12 Cron任务中获取传递的参数?

解决Plesk 12中Cron任务传参给PHP脚本的问题

首先得纠正你一个小错误:你提到的$arg是不存在的变量,正确的应该是$argc(记录参数总个数)和$argv(存储参数的数组),而且$argv[0]对应的是脚本本身的路径/文件名,你要的参数是从$argv[1]和$argv[2]开始取的,这是你没拿到参数的第一个原因。

接下来,结合Plesk的环境,咱们一步步排查解决:

1. 调整PHP脚本的参数获取逻辑

把脚本里的参数获取代码改成这样试试:

<?php
// 先检查$argv是否可用
if (isset($argv)) {
    echo "第一个参数:" . $argv[1] . "\n";
    echo "第二个参数:" . $argv[2] . "\n";
    // 打印所有参数确认
    print_r($argv);
} else {
    // 如果$argv不可用,尝试用$_SERVER['argv']
    print_r($_SERVER['argv']);
}
?>

注意:$argv只有在PHP以CLI(命令行)模式运行时才默认可用,如果是CGI模式,可能需要依赖$_SERVER['argv']或者调整配置。

2. 检查Plesk中Cron任务的命令格式

在Plesk的Cron任务设置里,Command字段的写法非常关键,你要确保用CLI版PHP执行脚本并传递参数,正确格式如下:

/usr/bin/php /path/to/your/script.php 33 On
  • usr/bin/php是PHP CLI的完整路径,不确定的话可以登录服务器执行which php命令查看。
  • /path/to/your/script.php是你PHP文件的绝对路径,比如/var/www/vhosts/yourdomain.com/httpdocs/your_task.php
  • 末尾直接跟上你的两个参数33和On

如果你的服务器用的是php-cgi而非PHP CLI,命令需要改成:

/usr/bin/php-cgi -f /path/to/your/script.php -- 33 On

这里的--是用来分隔PHP选项和脚本参数的,必须加上,否则参数会被当成php-cgi的命令选项处理。

3. 验证PHP配置是否允许获取命令行参数

登录服务器,执行以下命令查看CLI模式下的PHP配置:

php -i | grep register_argc_argv

如果输出是register_argc_argv => On => On,那没问题;如果是Off,你需要修改CLI版的php.ini文件(注意不是网页用的php.ini),把register_argc_argv设为On,之后按需重启相关服务。

4. 手动测试脚本,排除环境问题

先在服务器命令行里手动执行你的脚本:

php /path/to/your/script.php 33 On

如果手动执行能正确拿到参数,那问题大概率出在Plesk的Cron命令配置上;如果手动执行也拿不到参数,那就是脚本或者PHP配置的问题。

内容的提问来源于stack exchange,提问作者Josh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:31:18