PHP有时相对链接工作有时他们不会?

时间:2014-11-22 03:00:09

标签: php directory structure require relative-path

好的,这是我的项目结构(简化):

+blog
  -index.php //Index 2
  + views
    -index.php // Index 3
    -article.php
-index.php // Index 1
+partials
  -constants.php
  -top.php

好的,在索引1 索引2 中我使用这行代码来包含一些部分/片段:

索引1

<?php require_once("./partials/constants.php"); ?>
<?php require_once("./partials/top.php"); ?>

索引2

<?php require_once("../partials/constants.php"); ?>
<?php require_once("../partials/top.php"); ?>

但在索引3 如果我使用它:

<?php require_once(".../partials/constants.php"); ?>
<?php require_once(".../partials/top.php"); ?>

我收到此错误:

<body><br>
<b>Warning</b>:  require_once(.../partials/constants.php): failed to open stream: No such file or directory in <b>/home/codio/workspace/blog/views/index.php</b> on line <b>1</b><br>
<br>
<b>Fatal error</b>:  require_once(): Failed opening required '.../partials/constants.php' (include_path='.:/home/codio/.parts/packages/php5-apache2/5.5.15/lib/php') in <b>/home/codio/workspace/blog/views/index.php</b> on line <b>1</b><br>
</body>

1 个答案:

答案 0 :(得分:2)

文件路径前的那些点并不代表目录的级别。

./引用您所在的目录

../以上级别。

那就是说,你应该在index3上运行../../partials/constants.php

对于index2,因为它是一个高于index3的级别,您需要将require语句更改为../partials/constants.php

对于索引,因为它位于目录partials的同一级别,您将运行require ('partials/constants.php');