我的PHP代码有问题.
我有3个文件:
./foo1.php
<?php include './temp/foo2.php'; ?>
_________________________________________
./temp/foo2.php
<?php include '../php/print.php' ; ?>
_______________________________________
./php/print.php
<?php echo 'foo!'; ?>
Run Code Online (Sandbox Code Playgroud)
当然,如果我去./foo1.php什么都不会被打印(我想"富!"),但如果我去./temp/foo2.php"富!" 将被打印(没关系).当PHP将以递归模式包含phpfiles时,问题将得到解决...我的问题是如何解决这个问题?
更新:这是解决方案:
$_SERVER['DOCUMENT_ROOT'] - >之前使用绝对路径
这不是因为PHP需要"递归地"包含文件.从文档的评论:
请记住,如果文件A包含文件B,而B包括文件C; B中的包含路径应考虑到A而不是B是活动工作目录.
你的工作目录是.,你包括../php/print.phpvia foo2.php,找不到.顺便说一句,如果您检查日志,您将看到发出警告.
要正确修复此问题,请使用基本路径,从中包含所有内容,例如:
define("BASE", "/var/www/html");
include(BASE."/temp/foo2.php");
include(BASE."/php/print.php");
Run Code Online (Sandbox Code Playgroud)
这样,您的代码也可以轻松重定位.
| 归档时间: |
|
| 查看次数: |
85 次 |
| 最近记录: |