站点根相对路径不起作用

时间:2014-05-16 00:14:01

标签: php html

我不理解这一点。它搞砸了整个网站,因为我使用的是php模板。

据说开始与' /'根据我读过的每篇文章,从根本上开始我。但是,当我开始使用' /'它根本不起作用。

我的变量位于

public_html/cis130/textfiles/php/variables.php

我的template.php文件位于

public_html/cis130/textfiles/php/template.php

我的index.php文件位于

public_html/cis130/index.php

在我的index.php文件中,它读取,

<?php  
  require('/cis130/textfiles/php/variables.php');  
  $currentpage = $page[0];  
  require('/cis130/textfiles/php/template.php');  
?>

它不起作用......我得到&#34;致命错误:require():未能打开所需&#39; /cis130/final/textfiles/php/variables.php' (include_path =&#39;。:/ usr / local / php54 / pear&#39;)位于第3行和第34行的/home/philumpt/public_html/cis130/final/index.php;

如果我使用相对链接,

textfiles/php/file.php

然后它可以工作,但仅适用于index.php。我的其他页面位于&#39; public_html / cis130 / textfiles / pages /&#39;中。如果这很奇怪,那就是我班上的老师让我们做的事情。

5 个答案:

答案 0 :(得分:0)

试试这个:

require($_SERVER['DOCUMENT_ROOT'].'/cis130/textfiles/php/variables.php');

$ _ SERVER [&#39; DOCUMENT_ROOT&#39;]是如何在php中指定根目录的。

答案 1 :(得分:0)

为什么不从index.php的位置开始?像这样:

<?php  
  require('textfiles/php/variables.php');  
  $currentpage = $page[0];  
  require('textfiles/php/template.php');  
?>

对于其他页面使用:

<?php  
  require('../php/variables.php');  
  require('../php/template.php');  
?>

答案 2 :(得分:0)

我认为解决此问题的最简单方法是设置include目录并将所有文件放入其中。

在你的php.ini文件中,找到这一行......

ini_set('include_path', '/usr/lib/pear');

...但是将'/ usr / lib / pear'与您希望保存文档的文件夹的路径交换。它可以位于根目录的上方或下方。

然后,将所有包含文件放在那里。无论你包含哪个目录级别,它都会在那个目录中查找它们,使包含文件易于编写。

或者,您可以在正在更新的燃料中设置文件夹路径。确保它位于任何包含include的php文件的顶部。所有的require()函数都会先查看。

<?php
set_include_path('/path/to/folder');

答案 3 :(得分:0)

通过仅使用基本路径设置为配置来停止担心相对路径,这样您就不会经常处理相对位置。例如,在主配置文件中,您可以定义如下基本路径:

$BASE_PATH = '/the/path/to/the/codebase/';

如果您不知道文件的基本路径,请将此行放在PHP代码的顶部:

echo "Your path is: " . realpath(dirname(__FILE__)) . "<br />";

然后加载该页面。靠近顶部的某处应该是一行:

  

您的路径是:/ / path / to / the / codebase /

当然/the/path/to/the/codebase/将是您的实际文件路径,但这将是您的基本路径。然后只需将$BASE_PATH设置为该值。

然后当你执行require时,语法为:

require($BASE_PATH . '/cis130/textfiles/php/variables.php');

这样做的好处是,无论您的代码库嵌套多深,您都将始终固定在$BASE_PATH的值上。由于不必担心相对路径问题,您的生活将变得更轻松。

我还建议使用require_once而不是require来避免脚本可能无意中尝试多次加载同一文件的情况。

require_once($BASE_PATH . '/cis130/textfiles/php/variables.php');

答案 4 :(得分:0)

在linux中,以&#39; /&#39;开头的URI是完整的路径。示例'/run/shm/',因为/就像在Windows中说C:

如果您的PHP文件位于'dir/something.php'的父目录中,则写dir应该有效。

此外,您可以使用__DIR__来引用当前目录。

示例:$file = __DIR__.'filename.php'

http://www.php.net/manual/en/language.constants.predefined.php

'/'开头的网址是网站根目录的亲戚,但仅限于客户端,html。例如,您可以链接一些内容:<a href="/contact">Contact us</a>