Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Crontab和PHP一旦不能正常工作就需要__Php_Batch File_Cron_Crontab - Fatal编程技术网

Crontab和PHP一旦不能正常工作就需要_

Crontab和PHP一旦不能正常工作就需要_,php,batch-file,cron,crontab,Php,Batch File,Cron,Crontab,所以我设置了一个cron选项卡 SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # For details see man 4 crontabs # Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of mon

所以我设置了一个cron选项卡

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed
  40 14 *  *  * root php /home/sites/sitename/batch/sendemailtest.php
现在问题来了,当我在批处理目录中运行
php sendmailtest.php
时,一切正常。但是如果我从任何其他目录运行它,比如
php/home/sites/sitename/batch/sendmailtest.php
,它会给我带来麻烦

我认为这是因为php文件中有一个
require\u once

require_once '../includes/dbpw.php';
所以我猜我调用php文件的位置会把一切搞砸

我该如何解决这个问题


我还没有试过,担心会有意想不到的结果。。。但是,如果我将
HOME=/
更改为
HOME=/HOME/sites/sitename/batch/
,然后让它运行
php sendmailtest.php
,这样行吗?

cronjob是从crontab关联的用户的主目录运行的。有两种方法可以从这样的cronjob中获得正确工作的相对路径,但我认为最简单的方法是在调用脚本之前更改目录

40 14 * * * root cd /home/sites/sitename/batch && php sendemailtest.php

cronjob从crontab关联的用户的主目录运行。有两种方法可以从这样的cronjob中获得正确工作的相对路径,但我认为最简单的方法是在调用脚本之前更改目录

40 14 * * * root cd /home/sites/sitename/batch && php sendemailtest.php

有几种选择:

  • 将include调用更改为绝对文件<代码>包括('/home/sites/sitename/batch/scriptname.php')
  • 在php文件顶部使用以更改其工作目录。对于php来说,这就像脚本是从该目录中运行的一样。在php中:
    chdir('/home/sites/sitename/batch')
    。此调用之后的所有脚本都将显示为从新的工作目录运行
  • 像Glen建议的那样更改命令中的目录

  • 有几种选择:

  • 将include调用更改为绝对文件<代码>包括('/home/sites/sitename/batch/scriptname.php')
  • 在php文件顶部使用以更改其工作目录。对于php来说,这就像脚本是从该目录中运行的一样。在php中:
    chdir('/home/sites/sitename/batch')
    。此调用之后的所有脚本都将显示为从新的工作目录运行
  • 像Glen建议的那样更改命令中的目录