包含来自单独文件夹的文件

问题描述:

enter image description here包含来自单独文件夹的文件

附加图像显示文件的位置,它将帮助您给出答案。我想在我的文件'db/functions.php''process/delete.php'但没有什么工作。 我已经试过在'delete.php'

include_once '/db/functions.php'; 
include_once './db/functions.php'; 
include_once '../db/functions.php'; 
include_once $_SERVER['DOCUMENT_ROOT'].'/db/functions.php'; 

开始下面当我打开MAMP /日志/ php_error.log file其中第3行是包括声明它显示了以下错误

[28-Jul-2012 21:55:23] PHP Warning: include_once() 
[<a href='function.include'>function.include</a>]: 
Failed opening '/db/functions.php' for inclusion 
(include_path='.:/Applications/MAMP/bin/php/php5.3.6/lib/php') in 
/Applications/MAMP/htdocs/electromart/process/delete.php on line 3 

+3

你真的需要学习的路径是如何工作的。你的第三个例子('../ db/etc..')是应该工作的。其他尝试只是在黑暗中徘徊。 – 2012-07-28 17:33:29

+0

有两个问题:这是在Linux上吗?这是你的项目结构和/或你的服务器(docroot)结构吗? – N13 2012-07-28 17:34:26

+0

我正在使用Mac OS。感谢@MarcB你是对的,实际上我遇到了另一个问题,这就是为什么我认为第三选项不能正常工作。你可以发表你的评论作为答案,以便我可以接受它。 – 2012-07-28 17:42:46

从错误中你可以看到electromart文件夹丢失的路径,当你移动到另一台机器的目录结构可能取决于服务器是如何设置中更改过。尝试

include_once $_SERVER['DOCUMENT_ROOT'].'/electromart/db/functions.php'; 
+0

“源文件”不是实际的文件夹。 Netbeans将“源文件”下的所有文件分类。 Mac上文件的实际位置是'Applications/MAMP/htdocs/electromart/db/functions.php。用'electromart'代替'源文件'正在起作用。你能改善你的答案吗?和include_once'../db/functions.php'; 也在工作。 – 2012-07-28 18:14:29

+0

''/ db/functions.php'在每个文件中都适合你吗?我认为你必须改变,每一次当前文件的相对位置变化 – codingbiz 2012-07-28 18:19:18

+0

那么你的'$ _ SERVER [“DOCUMENT_ROOT”]'返回? – codingbiz 2012-07-28 18:20:34

试试这个:include_once realpath(dirname(__FILE__)."../db/functions.php");

+1

因此,创建一个文件已经存在的绝对路径,然后去相对?毫无意义... – 2012-07-28 17:55:26

+0

这并非毫无意义。虽然我会这样做'require_once dirname(__ FILE __)。'/ ../db/functions.php';'。从安全角度来看,Arshdeep的做法更安全。考虑到包括路径,chdir()调用,虚拟主机,各种子域设置,符号链接等内容,该列表将继续。就拿例如,从OWASP ESAPI代码在http://code.google.com/p/owasp-esapi-php/source/browse/trunk/src/filters/SafeRequest.php – 2012-07-28 20:16:16