我有一个PHP脚本并使用Cpanel接口我创建了一个每5分钟运行一次这个PHP脚本的cron作业。我现在的问题是我必须在脚本顶部的php脚本中手动设置根目录的路径,如下所示:
$root = '/var/home/www/site/';
然后我使用$ root作为路径引用任何包含/脚本。问题是我有一个用于测试脚本的开发框,然后将其上传到主服务器。每次我必须记住在主服务器上使用正确的根路径手动更改$ root变量。有没有办法自动执行此操作,所以我不必手动更新脚本?我试着看看我是否可以使用$ _SERVER ['REMOTE_ADDR']获取IP地址但是值为空并且$ _SERVER ['DOCUMENT_ROOT']值出现为/
答案 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/';