1
; Windows: "\path1;\path2"
include_path = “.;C:\xampp\php\PEAR;C:\xampp\php\Zend;C:\xampp\htdocs\rpg_historian;”

在上面,您将在我的 xampp 服务器上的 php.ini 中找到我的包含路径的地址。我希望能够包含嵌套在我的项目 rpg_historian 中的名为“includes”的文件夹中的文件。在 PHP 中,当我使用 -

<?php include('includes/header.php'); ?>

该页面可以正常工作并正确加载。但是,如果我单击一个链接,该链接将我发送到包含的内部/我最终会处于页面将显示的位置 -

> 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

我的 URL 变成http://localhost/rpg_historian/includes/index.php了不是 index.php 所在的位置。index.php 位于 rpg_historian 的根目录中。如何设置一个可以轻松设置包含的系统?我已经尝试了位于 http://www.geeksengine.com/article/php-include-path.html的说明

但是,即使在设置了包含路径之后,也是出于什么原因;它仍然不想正常工作。有人可以向我解释如何设置一个适当的 PHP 包含系统,让我可以轻松地从文件夹中访问文件吗?我的理解是,如果设置正确,PHP 足够智能,可以通过文件夹级联“查找内容”。

4

2 回答 2

1

修改你的链接:

<a href='../index.php' >或者<a href='<?=$_SERVER["SERVER_NAME"]?>/rpg_historian/index.php' >

Windows 系统变量与 PHP 包含函数无关。

如果包含文件的原始 Windows 路径是这样的: C:\xampp\htdocs\rpg_historian\includes\header.php

<?php include('includes/header.php'); ?>并从这里调用具有此内容的文件:C:\xampp\htdocs\

比试试这个:<?php include('rpg_historian/includes/header.php'); ?>

于 2012-10-06T14:56:35.240 回答
1

包含路径可以是绝对路径,即:

include('C:/xampp/htdocs/rpg_historian/includes/header.php');

或相对的(就像你现在拥有的那样)。如果它是相对的,那么它是相对于包含它的文件的。

现在,通常的解决方案是包含相对于文档根目录:

include($_SERVER['DOCUMENT_ROOT'] . '/rpg_historian/includes/header.php');

或者使用某种模式(如前端控制器)来保证以一致的方式处理包含,然后您可以include_path通过在路径前添加一个点(如include('./includes/header.php'))或使用魔术常量来克服该指令__DIR__

include(__DIR__ '/includes/header.php');

现在,所有这些都与包含有关,但您的问题似乎与生成链接有关(否则您将永远不会include仅通过 HTML 超链接进入目录)。为了避免这种情况,请确保您的 HTML 链接指向正确的位置,而不是指向本地 ( include) 目录。

于 2012-10-06T15:04:13.603 回答