我正在用PHP做一个小型家庭计算项目,我正在创建像这样的引用......
<a href=\"list_beer.php?order_by=name\">Beer</a>
这似乎找到了正确的文件。当我做包含时,我似乎需要一个路径名。
include_once ("/var/www/common.php");
我确定这不对。也许你可以告诉我这些东西的最佳实践是什么,这样我就可以创建与特定路径名(或操作系统没有关联)的脚本,以便在第一个例子中选择的文件是已知的/可以控制吗?也许是php.ini或apache中的一些设置?
谢谢。
答案 0 :(得分:3)
您也可以在PHP中使用相对路径:
include_once './common.php';
此路径现在相对于脚本, intitially 调用。
如果你遗漏了点
include_once 'common.php';
PHP将检查您include_path
中的所有路径,如果找不到名为common.php
的文件,则会尝试将common.php
相对于当前包含文件。
许多人都习惯于在index.php中定义一个常量,例如ROOT
,这个常量在其他地方使用:
const ROOT = __DIR__; // as of PHP 5.3
define('ROOT', dirname(__FILE__)); // if you don't have PHP 5.3
答案 1 :(得分:2)
你可以:
$_SERVER['DOCUMENT_ROOT']
。答案 2 :(得分:2)
实际上,两者都需要绝对路径。
对于网络资源,它应该从网络根目录开始 - /
对于文件,您需要一个虚拟路径符合文件系统的文件。
$_SERVER['DOCUMENT_ROOT']
就是为了这个目的。
所以
<a href="/list_beer.php?order_by=name">Beer</a>
和
include_once ($_SERVER['DOCUMENT_ROOT']."/common.php");
将按预期工作
答案 3 :(得分:2)
php ini文件设置
include_path = var / www / includes
意味着你只是忘记了关于相对和绝对路径的所有废话。
重要的不是你打电话给include / require的机智。
即使在说:
/var/www/html/example.com/very/long/way/down/index.php
可以包含该行;
包括'settings.php';
如果settings.php在/ var / www / includes /中,则会包含它。
你也可以在apache中的各个地方覆盖ini设置,即使在.htaccess中
这当然会将您的应用程序与您的服务器设置联系起来,有些人认为这些设置是不可接受的,但如果您没有分发您的内容,那么也请阅读ini_get和ini_set。
然后,您可以继续在include文件夹中创建自然目录,例如/ database,并在其中保留数据库设置。