1

我正在尝试调用文件或文件夹,例如:

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); 
?>
4

3 回答 3

4

如何使用:$_SERVER["DOCUMENT_ROOT"]

于 2011-01-16T02:59:50.217 回答
3

要获得最佳的根路径,您应该在视图文件中定义一个常量,即 (index.php),并且应该使其跨平台兼容。

在 PHP 和多平台应用程序工作多年后,我发现最好的方法是结合使用以下原生 PHP 函数和常量:

  • 定义
  • str_replace
  • 目录名
  • __FILE__

这就是我们使用这些函数的原因:

  • 我们之所以使用define,是为了让文档根保持在全局范围内
  • 原因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 中/\都是有效的,而对于其他操作系统它只是,所以通常你应该始终使用作为你的目录分隔符/来构建你的应用程序。/

于 2011-01-16T03:11:14.760 回答
0

除非您的functions.php文件位于 linux 系统根目录中,否则该路径将不起作用,因为第一个/字符表示“一直到根目录”。

如果functions.php与引用的文件位于同一目录中,请尝试以下操作:

$dir = dirname(__FILE__);
$functions_absolute_path = $dir . '/functions.php';
require($functions_absolute_path);
于 2011-01-16T03:02:26.040 回答