如果包含文件,则会出现包含错误

时间:2018-07-18 11:37:27

标签: php

我有一个聪明的项目:

devidate_server.php中:

<?php

include($_SERVER['DOCUMENT_ROOT'] . '/ax/ax_conf/CONSTANTS.php');
include($_SERVER['DOCUMENT_ROOT'] . '/ax/utils/utils.php');
...

我会得到错误,但是我无法获得错误信息,因为我正在开发WHMCS,所以我不知道回溯的位置。给我信息,界面空白。

但是,如果我评论include($_SERVER['DOCUMENT_ROOT'] . '/ax/utils/utils.php');,就不会出错。

将显示界面内容。

utils.php中有:

<?php

include($_SERVER['DOCUMENT_ROOT'].'/qi_cloud/utils/http_util.php');
include($_SERVER['DOCUMENT_ROOT'].'/qi_cloud/qi_cloud_config/urls.php');
include($_SERVER['DOCUMENT_ROOT'].'/qi_cloud/libs/Requests/library/Requests.php');
Requests::register_autoloader();

function fetch_qicloud_access_tokens($params){

    $result = Requests::post('http://localhost:8000/o/token', [
        // headers
    'Accept'=>'application/json'
 ], $params, [
        // options
        'auth' => new Requests_Auth_Basic([QICLOUD_whmcs_pj_client_id, QICLOUD_whmcs_pj_client_secret])
    ]);

    return $result;
}

我不知道为什么会出现包含错误,谁能帮助我为什么我评论那行会正常?


EDIT-01

我得到了错误日志:

  

[2018年7月18日星期三11:26:52.040872] [proxy_fcgi:error] [pid 29189:tid 139662983087872] [client 118.113.136.133:29440] AH01071:错误'PHP消息:PHP警告:require(/ usr /本地/httpd/htdocs/whmcs/qi_cloud/libs/Requests/library/Requests.php):无法打开流:/usr/local/httpd/htdocs/whmcs/qi_cloud/utils/http_util.php中没有此类文件或目录第9行\ nPHP消息:PHP警告:require(/usr/local/httpd/htdocs/whmcs/qi_cloud/libs/Requests/library/Requests.php):无法打开流:/ usr /中没有这样的文件或目录第9行\ nPHP上的local / httpd / htdocs / whmcs / qi_cloud / utils / http_util.php消息:PHP致命错误:require():无法打开所需的'/ usr / local / httpd / htdocs / whmcs / qi_cloud / libs / Requests第9行的/usr/local/httpd/htdocs/whmcs/qi_cloud/utils/http_util.php中的/library/Requests.php'(include_path ='。:/ usr / share / pear:/ usr / share / php') \ n',引荐来源:http://www.example.net/clientarea.php


EDIT-2

qi_cloud/utils/utils.php

<?php

include($_SERVER['DOCUMENT_ROOT'].'/qi_cloud/utils/http_util.php');
include($_SERVER['DOCUMENT_ROOT'].'/qi_cloud/qi_cloud_config/urls.php');
include($_SERVER['DOCUMENT_ROOT'].'/qi_cloud/libs/Requests/library/Requests.php');
Requests::register_autoloader();
...

urls.php

<?php

require('./CONSTANTS.php');

define('qicloud_oauth_token_url', QICLOUD_BASE_API . 'o/token/'); // 

CONSTANTS.php

<?php

define('QICLOUD_BASE_API', 'http://103.200.32.76:8000/');   
...

1 个答案:

答案 0 :(得分:0)

您不应该依赖文档根目录。

执行以下操作:

require_once( DIR 。'/relative/path/from/current/directory/file.php');

如果ifbfile不存在,则require一次将停止执行,因为它是require。如果第二次通过此代码,一次将确保您不会两次不包含该文件。作为绝对/类/常量声明,您不应包含一个以上的文件。如果使用正确的IDE(例如phpstorm),则文件路径无效时将发出警告。使用文档根变量无法实现这一点。

但是我不知道您确切的contalext,但是您应该检查诸如composer.json之类的内容来处理您的依赖项。

P.s。 DIR magic常量前后有2个下划线,但是移动网络版本上的格式受到限制,并且强制加粗...