PHP - 通过cron作业自动检测主目录

时间:2011-04-23 20:05:50

标签: php cron

我有一个PHP脚本并使用Cpanel接口我创建了一个每5分钟运行一次这个PHP脚本的cron作业。我现在的问题是我必须在脚本顶部的php脚本中手动设置根目录的路径,如下所示:

$root = '/var/home/www/site/';

然后我使用$ root作为路径引用任何包含/脚本。问题是我有一个用于测试脚本的开发框,然后将其上传到主服务器。每次我必须记住在主服务器上使用正确的根路径手动更改$ root变量。有没有办法自动执行此操作,所以我不必手动更新脚本?我试着看看我是否可以使用$ _SERVER ['REMOTE_ADDR']获取IP地址但是值为空并且$ _SERVER ['DOCUMENT_ROOT']值出现为/

4 个答案:

答案 0 :(得分:0)

我认为你正在寻找getcwd()。它返回当前的工作目录。

答案 1 :(得分:0)

如果它是一个cron作业,我猜最安全的方法是使用dirname ( __FILE__ )(或者像James和Alix所说,对于php> = 5.3 __DIR__) - 它返回您正在运行的脚本所在的目录。

答案 2 :(得分:0)

您可以在crontab文件中定义环境变量。在crontab的开头添加:

MY_BASE_DIR = "/var/home/www/site/"

现在在PHP脚本中,你可以通过查看:

来掌握这一点
$_ENV['MY_BASE_DIR']

知道你可以在live / dev服务器上定义相同的变量,或者你可以让脚本使用它查找环境变量(如果它在那里)或者如果它不存在则回退到默认值。

答案 3 :(得分:-1)

您可以使用其中一个变量在环境之间切换:

$_SERVER['SERVER_ADDR']
  

服务器的IP地址   当前脚本正在执行。


$_SERVER['SERVER_NAME']
  

服务器主机的名称   当前脚本正在执行。   如果脚本在虚拟上运行   主机,这将是定义的值   对于那个虚拟主机。


我不确定这些是否在CRON / php-cli下定义,但另一种方法可能是检查该文件夹是否存在:

$root = (is_dir('/var/home/www/site/')) ? '/var/home/www/site/' : '/dev/site/';