0

我正在开发一个应用程序并使用一个子文件夹作为测试域。

http://mywebsite/testing-folder

我的 dbconfig 位于:

http://mywebsite/testing-folder/lib/dbconfig.php

如果我包含以下文件: http://mywebsite/testing-folder/userarea/profile

使用相对路径就可以了。如果我将其包含在直接路径中,则会引发错误:

FATAL ERROR: Call to a member function prepare() on a non-object in...

$root = 'http://mywebsite/testing-folder/';
include '../../lib/dbconfig.php'; // This works
include $root.'lib/dbconfig.php'; // This does not

关于为什么的任何线索?

4

2 回答 2

2

您必须使用文件系统路径,而不是使用 URL。所以而不是

$root = 'http://mywebsite/testing-folder/';

就像是

$root = '/var/www/whatever/';

应该使用。当您通过 http 包含 php 时,您的网络服务器将已经解释代码并返回您在那里输出的任何内容(如echo "hello world";)。如果您的文件仅包含配置,则输出可能为空。

于 2013-08-02T15:19:05.320 回答
1

您正在尝试通过 HTTP 包含文件。这是不对的,您应该通过将本地文件系统路径传递给includeor来包含文件require

您的根目录应该如下所示:

$root = '/var/www/mywebsite/testing-folder/';
于 2013-08-02T15:16:22.547 回答