【发布时间】:2013-12-10 06:51:10
【问题描述】:
当 php 文件通过 include() 和 required_once() 包含在另一个 php 文件中时,我很难找到将 php 文件正确加载到另一个 php 文件中的方法。我发现如果
Afile.php 使用诸如../controller/mycontroller.php 之类的url 在其中包含另一个php 文件,当Afile.php 被包含在位于不同目录中的Bfile.php 中时,../ 会将Afile.php 的url 引导到一个基于 Bfile.php 的不同目录。
我尝试使用这些PHP字符串来指定一个静态的文件的url,这样当许多.php文件中有多个包含时就不会产生误解。但它没有用!
有没有更好的方法来定义 .php 文件的文件位置,以便当我想要包含、调用或加载位于不同目录中的 .php 文件时,它本身也包含在其他目录中的其他 php 文件中目录?
如果有任何困惑,请告诉我。
谢谢
更新
define('PUBLICPATH', __DIR__.'/');
// I prefer to have the "root dir" not accessible from public dir
define('ROOTROOT', realpath(PUBLICPATH.'..').'/');
$pathnow= define('APPPATH', realpath(PUBLICPATH.'../application').'/');
echo 'pathnow:'.APPPATH;
它在 chrome 中返回 pathnow:/ 作为结果页面
【问题讨论】:
-
使用绝对路径。这样你就不会再遇到任何问题了。
-
使用您的 udpate,
$pathnow返回函数 define() 的结果。检查 define 如何在 php.net/define 上工作。将您的代码替换为echo 'pathnow:'.APPPATH; -
因为 realpath() 返回一个真实的路径。如果它不存在,这将返回 false。可能
__DIR__不适用于您的php版本,所以您需要将其替换为dirname(__FILE__) -
@Asenar 一个有趣的麻烦,我发现使用 PUBLICPATH 返回的路径将全部为
\path\mypath样式,而您的代码尝试在此之后附加/... 是错字吗?还是需要在代码中进行调整? -
附录:当你开发php代码时,你可以在你的主脚本开头添加以下内容:
ini_set('display_errors', 'on'); error_reporting(E_ALL);。这样,所有问题都会显示出来
标签: php url curl include include-path