【问题标题】:How to setup doc_root path for php files?如何为 php 文件设置 doc_root 路径?
【发布时间】:2011-06-09 20:47:06
【问题描述】:

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

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 来构建链接

-----UPDATE------为了更清楚,这里是不起作用的代码:

<?php 
$ourFileName = '/jobs/';
$ourFileHandle = fopen($ourFileName.'index.php', 'w') or die("can't open file");
fwrite($ourFileHandle, 'hello world');  
fclose($ourFileHandle); 
?>

【问题讨论】:

  • 请显示使用你的目录结构,我们需要知道你使用fopen的文件在哪里,/folder/subfolder/index.php在哪里,才能为你做出准确的答复。
  • 我想我已经解释了一切。我不希望文件或文件夹依赖于其位置,只是为了能够从根“/”中调用它,仅此而已。尝试执行代码以使其清晰:

标签: php path absolute-path


【解决方案1】:

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

【讨论】:

【解决方案2】:

要获得最佳的根路径,您应该在视图文件中定义一个常量,即 (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 中,/\ 都有效,而对于其他操作系统,它只是 /,因此通常您应该始终使用 / 作为目录分隔符来构建应用程序。

【讨论】:

  • 不正确,$_SERVER['DOCUMENT_ROOT'] 的斜杠在不同平台上有所不同,在命令/shell 环境中也是空的。
  • 另外,$_SERVER['DOCUMENT_ROOT'] 在某些 Apache 配置(特别是那些使用 'VirtualDocumentRoot' 指令的配置)上是不可靠的。所以后面的file_exists()函数返回false。
  • 保持简单,不需要完美
  • 你知道更好的伙伴......不幸的是,我只是看到你在说话,没有其他人评论过这种方法或评价你的答案,所以我不是教你或说哇那太棒了等等的人。 . 谢谢你的帮助!
  • @Alex:实际上 RobertPitt 是对的,$_SERVER['DOCUMENT_ROOT'] 是不可靠的,你只是没有足够的 PHP 经验来知道这一点。
【解决方案3】:

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

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

$dir = dirname(__FILE__);
$functions_absolute_path = $dir . '/functions.php';
require($functions_absolute_path);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-27
    • 2012-08-04
    • 1970-01-01
    • 1970-01-01
    • 2015-09-16
    • 2020-06-07
    • 1970-01-01
    相关资源
    最近更新 更多