PHP:chdir('../')无法从命令行工作

时间:2017-08-16 13:47:44

标签: php shell command-line chdir

我正在开发一个PHP cron脚本来检查服务器是否启动(Ping)。

这是我的代码:

// Remonte d'un dossier
chdir('../');

// Inclusion du header pour avoir les infos de connexion à la db, fonctions, etc ...
require_once('./includes/header.php');

// Requête pour récupérer toutes les IP à pinger (Non-exclues donc)
$sReqGetAllServers = "  SELECT
                            *
                        FROM
                            host
                        WHERE
                            exclude_machine = :exclude_machine";

// Préparation de la requête
$oDatabase->Prepare($sReqGetAllServers);

// On bind la valeur au paramètre dans le WHERE
$oDatabase->BindValue(':exclude_machine', 'n', PDO::PARAM_STR);

// Exécution de la requête
$oDatabase->Execute();

// On associe les données dans un tableau à deux dimensions associatif
$aServers = $oDatabase->Assoc();

所以在第一行,我需要制作一个chdir('../');来包含必要的文件(header.php)。

我使用Chrome测试了脚本并且一切正常但是当我使用命令行执行脚本时,PHP会丢失此错误:

[14:40] root@dev.company.local / >> php -f /web/dev/company/public_html/dasPing/cron/cron.php 
PHP Warning:  require_once(./includes/header.php): failed to open stream: No such file or directory in /var/www/html/dev/diadeis/public_html/dasPing/cron/cron.php on line 7

Warning: require_once(./includes/header.php): failed to open stream: No such file or directory in /var/www/html/dev/diadeis/public_html/dasPing/cron/cron.php on line 7
PHP Fatal error:  require_once(): Failed opening required './includes/header.php' (include_path='/usr/share/php') in /var/www/html/dev/diadeis/public_html/dasPing/cron/cron.php on line 7

Fatal error: require_once(): Failed opening required './includes/header.php' (include_path='/usr/share/php') in /var/www/html/dev/diadeis/public_html/dasPing/cron/cron.php on line 7

我搜索了为什么PHP放弃了这个,但我找不到任何答案。

有谁知道为什么会这样?

谢谢!

1 个答案:

答案 0 :(得分:1)

当前工作目录将是您执行脚本的位置,而不是脚本所在的位置。您可以使用常量__DIR__

获取包含脚本的目录
chdir(__DIR__ . '/../');