我使用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
答案 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';