我正在尝试调用文件或文件夹,如:
require('/functions.php');
$a = '/folder/';
但它不会工作并继续给出错误“无法打开流”,我知道我可以修改php.ini中的“doc_root”但不确定这是否正确以及究竟要修改什么。
有人可以建议吗?
谢谢。------更新----- 我只是想使用fopen:
在子文件夹中创建一个文件$ourFileName = "/folder/subfolder/index.php"
$ourFileHandle = fopen($ourFileName, 'w') or die("can't open file");
但我不想使用$ _SERVER ['DOCUMENT_ROOT'],因为我想使用相同的变量$ ourFileName来构建链接
------更新------为了使它更清晰,这里的代码不起作用:
<?php
$ourFileName = '/jobs/';
$ourFileHandle = fopen($ourFileName.'index.php', 'w') or die("can't open file");
fwrite($ourFileHandle, 'hello world');
fclose($ourFileHandle);
?>
答案 0 :(得分:4)
如何使用: $ _SERVER [ “DOCUMENT_ROOT”]
答案 1 :(得分:3)
要获得最佳的根路径,您应该在视图文件中定义一个常量,即(index.php),并且应该使其与跨平台兼容。
在PHP和多平台应用程序工作多年后,我发现执行此操作的最佳方法是以下本机PHP函数和常量的组合:
__FILE__
这就是为什么我们使用这些功能:
str_replace
的原因是将斜杠更改为跨平台兼容dirname
的原因是帮助提供根视图文件的相对路径__FILE__
的原因是发现dirname
我们可以将__DIR__
用于PHP5,但__FILE__
更好,因为它支持以前版本的Windows。
完全组合后,您将拥有一个有效的视图文件相对路径。
define("ROOT_PATH",str_repalce("\\","/",dirname(__FILE__)));
这会产生索引目录的完美相对路径而不带斜杠,你应该像这样包含你的文件:
require_once ROOT_PATH . "/system/classes/some.class.php";
在Windows中,/
和\
都有效,而对于其他操作系统,它只是/
,因此通常应始终使用/
构建应用程序目录分隔符。
答案 2 :(得分:0)
除非您的functions.php
文件位于linux系统根目录中,否则该路径将不起作用,因为第一个/
字符意味着“一直到root”。
如果functions.php
与您引用的文件位于同一目录中,请尝试以下操作:
$dir = dirname(__FILE__);
$functions_absolute_path = $dir . '/functions.php';
require($functions_absolute_path);