Nat*_*n H 4 php relative-path include
在我的代码中的许多地方,我做的事情如下:
file1.php:
<?php
include('../file2.php');
file2.php:
<?php
include('anotherdirectory/file3.php');
Run Code Online (Sandbox Code Playgroud)
根据我尝试此操作的服务器或设置,它可以设置"包含者"或"包含"的相对路径.这真令人困惑.所以file1可能会尝试包含"../anotherdirectory/file3.php",或者它可能会尝试"anotherdirectory/file3.php".
什么设置决定了这种行为?我希望控制这个......
a1e*_*x07 11
在我需要使用相对路径的情况下,我使用以下语法:
include (realpath(dirname(__FILE__)."/another_folder/myfile.php"));
Run Code Online (Sandbox Code Playgroud)
我建议使用绝对路径.在保持可移植性的同时执行此操作的一种好方法是在public_html/index.php中进行如下声明:
define('ROOT', dirname(__FILE__));
Run Code Online (Sandbox Code Playgroud)
然后,您可以编写包含这样的包含非常简单的内容:
include(ROOT.'/file.php');
Run Code Online (Sandbox Code Playgroud)
否则,PHP会检查文件是否在php.ini定义的包含路径中.如果它不存在,它会尝试当前脚本的相对路径.这是不可预测和不可维护的,因为您可能会包含来自不同相对位置的文件.
编辑:如果你经常包含很多类文件,你可能想要研究自动加载.如果您以面向对象的方式编程,它会使一切变得简单.我个人从未在我的代码中写过"包含"这个词很长一段时间.
编辑2:您可以使用php.ini指令 auto_prepend_file自动包含一个单行文件,其中包含每个脚本的ROOT定义.