我是PHP的新手,我需要在项目中使用外部库中的一些类。
我的.php文件,SMMain.php
位于我的Mac上的/Library/WebServer/Documents
目录中。我把它们放在旁边的外部库中。所有这些文件都来自namespace Parse;
。有些类位于名为Internal
的目录中。
无论我尝试require_once
,我都会收到找不到文件的错误。这就是我的尝试:
require_once('\Internal\Encodable.php');
产生此错误:
Fatal error: require_once(): Failed opening required '\Internal\Encodable.php' (include_path='.:') in /Library/WebServer/Documents/SMMain.php on line 13
接下来尝试:
require_once('/Internal/Encodable.php');
产生这个:
Fatal error: require_once(): Failed opening required '.php' (include_path='.:') in /Library/WebServer/Documents/SMMain.php on line 7
我也尝试过:
require_once(realpath($_SERVER["DOCUMENT_ROOT"]) .'/Internal/Encodable.php');
/Internal/Encodable
文件没有错误,但这会产生另一个错误:
Fatal error: Class 'ParseObject' not found in /Library/WebServer/Documents/SMMain.php on line 24
ParseObject.php
与我的SMMain.php
一起位于根目录中。所以我试着像这样要求:
require_once(realpath($_SERVER["DOCUMENT_ROOT"]) . '/ParseObject.php');
给出了这个错误:
Fatal error: Class 'ParseObject' not found in /Library/WebServer/Documents/SMMain.php on line 24
如果我试试这个:
require_once(realpath($_SERVER["DOCUMENT_ROOT"]) . 'ParseObject.php');
错误是:
Fatal error: require_once(): Failed opening required '/Library/WebServer/DocumentsParseObject.php' (include_path='.:') in /Library/WebServer/Documents/SMMain.php on line 17
那么解决方案是什么?
答案 0 :(得分:0)
如果内部目录位于服务器文档根目录下并且Encodable.php位于其中,则使用require_once($_SERVER["DOCUMENT_ROOT"] .'/Internal/Encodable.php');
。
您可以使用echo getcwd();
查看当前工作目录的位置。
我总是这样做,当我调用我的index.php文件(它处理所有其他文件),确定,我的基本路径在哪里,并将其存储在常量中。最近,我将始终包含具有该路径的文件作为绝对路径。