我刚刚将我的项目上传到使用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() {
}发布于 2017-11-14 15:42:32
这是由于您当前的工作目录(CWD),它与您启动脚本的目录匹配。如果这是一个网站,应该可以安全地假设CWD是index.php文件所在的位置。
围绕这一问题有两种方法:
1)按照注释中的建议,从BASEPATH内部声明一个index.php常量,并始终使用它前缀包含路径:
// index.php:
define('BASEPATH', __DIR__.'/');
// other files:
// require BASEPATH.'path/relative/to/index.php/directory2)使用__DIR__ 幻数常数本身前缀include on文件,但相对于您从何处包含它们(在您的情况下,这将立即生效,不会发生其他更改):
require __DIR__.'/../vendor/autoload.php';https://stackoverflow.com/questions/47288346
复制相似问题