; Windows: "\path1;\path2"
include_path = “.;C:\xampp\php\PEAR;C:\xampp\php\Zend;C:\xampp\htdocs\rpg_historian;”
上面你会在我的xampp服务器上的php.ini中找到我的include路径的地址。我希望能够包含嵌套在我的项目rpg_historian中的名为“includes”的文件夹中的文件。在PHP中我使用 -
<?php include('includes/header.php'); ?>
页面正常工作和加载。但是,如果我点击链接发送给我INSIDE of includes /我最终会在页面显示的位置 -
> Object not found!
>
> The requested URL was not found on this server. The link on the
> referring page seems to be wrong or outdated. Please inform the author
> of that page about the error.
>
> If you think this is a server error, please contact the webmaster.
>
> Error 404
>
> localhost 10/06/12 09:46:58 Apache/2.2.21 (Win32) mod_ssl/2.2.21
> OpenSSL/1.0.0e PHP/5.3.8 mod_perl/2.0.4 Perl/v5.10.1
我的网址变为http://localhost/rpg_historian/includes/index.php
,而不是index.php所在的位置。 index.php位于rpg_historian的根目录下。如何设置我可以轻松设置的系统?我已尝试过指示 -
http://www.geeksengine.com/article/php-include-path.html
但是,即使在设置了包含路径之后,仍然有任何理由;它仍然不想正常工作。有人可以向我解释如何设置一个适当的PHP包含系统,允许我轻松访问文件夹中的文件?我的理解是,如果设置正确,PHP足够聪明,可以通过文件夹级联来“找东西”。
答案 0 :(得分:1)
修改链接:
<a href='../index.php' >
或<a href='<?=$_SERVER["SERVER_NAME"]?>/rpg_historian/index.php' >
Windows系统变量与PHP include函数无关。
如果包含文件的原始Windows路径是这样的:
C:\xampp\htdocs\rpg_historian\includes\header.php
从此处调用包含此内容<?php include('includes/header.php'); ?>
的文件:C:\xampp\htdocs\
试试这个:<?php include('rpg_historian/includes/header.php'); ?>
答案 1 :(得分:1)
包含路径可以是绝对路径,即:
include('C:/xampp/htdocs/rpg_historian/includes/header.php');
或亲戚(就像你现在一样)。如果它是相对的,那么它相对于包含它的文件。
现在,通常的解决方案是要相对于文档根目录包括:
include($_SERVER['DOCUMENT_ROOT'] . '/rpg_historian/includes/header.php');
或使用某种模式(如front controller)来保证以一致的方式处理包含,然后您可以通过在路径前加一个点来克服include_path
指令(比如include('./includes/header.php')
)或使用像__DIR__
这样的魔术常量:
include(__DIR__ '/includes/header.php');
现在,所有这些都是关于包含的,但是您的问题似乎是关于生成链接(否则您将永远不会仅仅通过遵循HTML超链接进入include
目录)。为避免这种情况,请确保您的HTML链接指向正确的位置,而不是指向本地(include
)目录。