父目录中的require在主机上不起作用

时间:2019-07-02 15:45:09

标签: php

我目前想将php应用程序部署到共享主机。可悲的是,require函数似乎无法访问父目录以包含文件。这仅在本地有效。我创建了一个最小的工作示例:

目录结构:

/project/bootstrap/app.php
/project/public/index.php

app.php:

<?php

print("Hello from app");

index.php:

<?php

require __DIR__ . '/../bootstrap/app.php';

print('Hello World!');

该应用程序在本地运行正常,而在服务器上则显示“ HTTP ERROR 500”。我检查了服务器上的文件夹和文件权限,文件夹的权限设置为755,文件的权限设置为644。

编辑:当我激活错误报告时,出现以下错误:

Warning: require(): open_basedir restriction in effect. File(/path/on/hoster/bootstrap/app.php) is not within the allowed path(s): (/path/on/hoster/public/:/tmp/) in /path/on/hoster/public/index.php on line 6

Warning: require(/path/on/hoster/bootstrap/app.php): failed to open stream: Operation not permitted in /path/on/hoster/public/index.php on line 6

Fatal error: require(): Failed opening required '/path/on/hoster/public/../bootstrap/app.php' (include_path='.:/opt/plesk/php/7.2/share/pear') in /path/on/hoster/public/index.php on line 6

1 个答案:

答案 0 :(得分:0)

也许您的主机正在使用旧的PHP版本。

检查此代码:

<?php

require realpath( dirname(__FILE__) . '/../bootstrap/app.php' );

print('Hello World!');

或者只是这样做:

require  '../bootstrap/app.php';

更新

如果看不到任何错误,请通过在代码顶部添加以下几行来启用PHP的错误报告:

error_reporting(E_ALL);
ini_set('display_errors', 1);