PHP include_once在本地工作,但在cron中调用不起作用

时间:2017-04-13 07:06:45

标签: php cron

我使用include_once在php中包含文件它将在localhost中运行但是使用cron运行相同的文件它会显示错误

File name : cron_all.php
<?php
    define('project_name','/cloud');
    include_once($_SERVER['DOCUMENT_ROOT'].project_name."/references/library.php");
?>

错误:

  

[root @ xx-xxx-xx~] #php   /var/www/html/cloud/cloud_ip_automation/cron_all.php

     

PHP警告:include_once(/cloud/references/library.php):失败了   open stream:没有这样的文件或目录   第3行的/var/www/html/cloud/cloud_ip_automation/cron_all.php

     

警告:include_once(/cloud/references/library.php):无法打开   stream:没有这样的文件或目录   第3行的/var/www/html/cloud/cloud_ip_automation/cron_all.php

     

PHP警告:include_once():打开失败   &#39; /cloud/references/library.php'包括在内   (include_path =&#39;。:/ usr / share / pear:/ usr / share / php&#39;)in   第3行的/var/www/html/cloud/cloud_ip_automation/cron_all.php

     

警告:include_once():打开失败   &#39; /cloud/references/library.php'包括在内   (include_path =&#39;。:/ usr / share / pear:/ usr / share / php&#39;)in   第3行的/var/www/html/cloud/cloud_ip_automation/cron_all.php

2 个答案:

答案 0 :(得分:2)

从CLI运行时未设置$ _SERVER变量。 您必须使用dirname(__FILE__)并创建相对于当前文件的路径。

例如在您的情况下,例如:

include_once(dirname(__FILE__).'/../'.project_name.'/references/library.php');

答案 1 :(得分:1)

这将创建一个绝对路径,但相对于文件

include_once dirname(__FILE__) . '/../'.project_name.'/references/library.php';