嗯,网站的结构很简单:
config
'夹
login
'夹
CONFIG.PHP:
include_once '../config/cesar.php';
site.com/index.php
:
Warning: include_once(../config/cesar.php): failed to open stream: No such file or directory
在site.com/login/index.php
一切正常。
如果我将删除一个点(./config/cesar.php),主索引将变为OK,登录页面将收到错误。 如何使两个代码都有效?
答案 0 :(得分:1)
路径中的..
用于上传目录,因为该文件在您查找的位置不存在。
如果你将它更新为include_once 'config/cesar.php';
它应该可以工作,因为这将允许它进入config目录,而不是试图找到一个名称为config 1 level的目录,其中index.php位于
./
有效,因为.
是当前目录的符号。
要回答您的问题,将无法通过使用相对路径使代码工作,因为这两个文件位于服务器上与您要包含的位置相关的位置。如果你想要有一些东西,你需要使用绝对路径而不是相对路径。这类似于* {nix中的/path/to/webdirectory/site.com/path/to/file/config.php
(即/home/charles/websites/site.com/config/config.php
)和Windows上的C:\path\to\webdirectory\site.com\path\to\file\config.php
。
在PHP中,您应该能够使用$_SERVER['DOCUMENT_ROOT']
变量以动态方式获取绝对路径。例如:include_once $_SERVER['DOCUMENT_ROOT'] . '/config/cesar.php';
答案 1 :(得分:-1)
Warning: include_once(../config/cesar.php): failed to open stream: No such file or directory
我遇到过类似的问题一次。您需要记住(./config/xxx.php)
和(config/xxx.php)
表示相同的内容,但(../config/xxx.php)
会在目录中找到config文件夹和xxx.php文件。
您还可以使用$base_url
作为所有路径的前置字符串,以使其清晰。其中:
$base_url = 'http://' . $_SERVER['SERVER_NAME'];
然后替换
之类的路径../config/xxx.php
与
$base_url.'/config/xxx.php'