错误包括文件(include_path ='。:/ usr / share / pear:/ usr / share / php')

时间:2017-11-14 14:35:07

标签: php

我刚刚使用var/www将项目上传到slim framework中的服务器,项目的文件夹结构如下:

include -Functions.php controller -weeklysummary.php(我要运行的脚本) vendor -autoload.php

当我尝试在Functions.php脚本中调用一个函数在我的本地机器上,该项目工作正常,但在服务器上它一直告诉我`

 Warning: require(../vendor/autoload.php): failed to open stream: No such file or directory in /var/www/html/project/include/Functions.php on line 11

 Fatal error: require(): Failed opening required '../vendor/autoload.php' (include_path='.:/usr/share/pear:/usr/share/php') in /var/www/html/innov8alert/include/Functions.php on line 11`

这就是Functions.php的样子

class Functions {

private $conn;


function __construct() {
    require_once 'Connect.php';
    require '../vendor/autoload.php';
    require '../mailer/class.phpmailer.php';
    $db = new Connect();
    $this->conn = $db->connect();
}

function __destruct() {

}

我查了thisthis,但似乎都没有帮助。

1 个答案:

答案 0 :(得分:0)

这是由于您的当前工作目录(CWD),它与您启动脚本的目录相匹配。如果这是一个网站,应该可以安全地假设CWD是index.php文件所在的位置。

解决这个问题的方法有两种:

1)正如评论中所建议的,从index.php内部声明一个BASEPATH常量,并始终使用它来包含路径前缀:

// index.php:
define('BASEPATH', __DIR__.'/');

// other files:
// require BASEPATH.'path/relative/to/index.php/directory

2)使用__DIR__ magic constant本身为文件添加前缀,但相对于您包含文件的位置(这将立即适用于您的情况而无需其他更改):

require __DIR__.'/../vendor/autoload.php';