我创build了一个cron作业,在设定的时间触发一个url,然后启动一个产品导入脚本。 但由于某些原因,带参数的触发器url的一部分被剥离了。
我设置了这样的cron作业:
/usr/bin/wget -O /dev/null http://domain.nl/wp-cron.php?import_key=XXXXXXXXXX&import_id=3&action=processing
但它只运行http://domain.nl/wp-cron.php?import_key=XXXXXXXXXX
。 实际上告诉脚本做什么的最后部分在哪里?
谁知道为什么这样做,以及如何使其工作?
&符号字符( &
)实际上是指Linux中的某些内容(在Bourne兼容的shell中)。 这意味着:运行该命令作为后台任务 。
正因为如此,你实际上告诉cron在后台运行/usr/bin/wget -O /dev/null http://domain.nl/wp-cron.php?import_key=XXXXXXXXXX
,然后执行action=processing
。 这就是cron为你做的 – 你告诉它做的。
为了解决这个问题,你需要转义&
字符,以便它被作为url的一部分处理,而不是被解释为一个控制字符。
最简单的解决scheme是将URL封装在引号中。
除了已经提到的&符号之外,还需要注意cron条目中的%
字符。 cron条目中的%
将被解释为换行符,并且必须使用反斜杠( \%
)进行转义。 确保您审查的import_key
没有这样的字符。 此外,url通常在其中有%
来逃避某些字符如空间 ),
=
等