PHP - 更智能的文件引用

时间:2014-02-11 21:56:33

标签: php document-root

我有一些简单的PHP脚本可以帮助我完成每台服务器上的小任务。我只通过 CLI 运行它,因为并非我的所有服务器都有Apache,但我在所有服务器上都安装了PHP。 我想随时随身携带。

这是我的脚本方案:

dir_libs/top.php  (top.php references all my classes and functions)
dir_logs/  (holds logs I may create)
runstats.php  (this is what I initialize from CL)

以下是我在其中一台服务器上所做的事情:

runstats.php

<?php
require('/home/myuser/public_html/dir_libs/top.php'); // holds functions
require('/home/myuser/public_html/dir_logs/'); // holds logs from my functions

 echo display_stats();
 echo "\n---------------------\n";
?>

我显然需要更改绝对路径,具体取决于服务器,因为我并不总是保持相同 - 即使我克隆虚拟机。

我尝试了$_SERVER['DOCUMENT_ROOT'],但似乎需要浏览器知道它的位置。

有没有人有建议? 我再次打算从命令行运行 runstats.php

3 个答案:

答案 0 :(得分:0)

将路径存储在常量中,然后将其附加到文件中。

define('BASE', '/home/myuser/public_html/');
require(BASE . 'dir_libs/top.php');

答案 1 :(得分:0)

这通常使用__DIR__魔术常量在PHP中完成,如下所示:

require_once(__DIR__ . '/path/to/file.php');

要从不同的嵌入式目录访问您的顶级,您可以执行类似这样的操作:

require_once(__DIR__ . '/../dir_libs/top.php');

对于5.3.0之前的PHP版本,您可以使用dirname(__FILE__)代替__DIR__

对于一个真实的示例,您可以查看Laravel项目,该项目在.phppublic目录中的bootstrap文件中使用了一些不同的技巧来引用其他项目中的文件:

https://github.com/laravel/laravel/tree/v4.1.18

(我已链接到当前版本,以防以后更改。)

答案 2 :(得分:0)

在php 4中,添加了__FILE____DIR__常量。这些应该对你有帮助!

http://www.php.net/manual/en/language.constants.predefined.php