【问题标题】:why require_once it's not working If I called same file from different folder?为什么 require_once 它不起作用如果我从不同的文件夹调用相同的文件?
【发布时间】:2016-07-28 07:13:34
【问题描述】:

这是我的根目录

dev (root folder)     
|   zones(folder)
|   |    index.php
|   |    new-zone.php
|   |    update-zone.php
index.php
login.php
signup.php
header.php
functions.php

在根文件夹之外,我有一个名为 config.php 的配置文件

现在从header.php 页面我正在调用以下代码,它工作正常:

require_once('../config/config.php');
require_once('functions.php');

但现在我需要从文件夹zones/index.php 页面调用相同的header.php 文件,其代码如下:

require_once("../header.php"); 

但显示以下错误消息:

require_once(../config/config.php):无法打开流:没有这样的 D:\Softwares 中的文件或目录 在第 3 行安装了\xampp-old\htdocs\aponit\dev\header.php

致命错误:require_once():需要打开失败 '../config/config.php' (include_path='.;D:\Softwares 安装在\xampp-old\php\PEAR\;D:\xampp\htdocs\smarty\libs\') 中 D:\Softwares Installed\xampp-old\htdocs\aponit\dev\header.php 上线 3

我该如何解决这个错误?我想从不同的文件夹调用header.php文件?

注意:我使用以下 .htaccess 规则来使用 SEO 友好的 url 和自定义错误消息页面。

.ht访问代码:

Options -MultiViews
ErrorDocument 404 http://localhost/aponit/dev/not-found.php
ErrorDocument 500 http://localhost/aponit/dev/404.php
RewriteEngine on

RewriteRule ^(?:zones/)?update-zone/(\w+)/?$ update-zone.php?z=$1 [L,QSA,NC]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+?)/?$ $1.php [L]

【问题讨论】:

标签: php apache .htaccess


【解决方案1】:

尝试使用:

__DIR__

import里面的header.php文件前面。

require_once(__DIR__ . '/../config/config.php');

见Magic Constants

【讨论】:

  • 显示错误信息:Warning: require_once(D:\Softwares Installed\xampp-old\htdocs\aponit\dev../config/config.php): failed to open stream: No such file or directory in D:\Softwares Installed\xampp-old\htdocs\aponit\dev\header.php on line 3
  • Fatal error: require_once(): Failed opening required 'D:\Softwares Installed\xampp-old\htdocs\aponit\dev../config/config.php' (include_path='.;D:\Softwares Installed\xampp-old\php\PEAR\;D:\xampp\htdocs\smarty\libs\') in D:\Softwares Installed\xampp-old\htdocs\aponit\dev\header.php on line 3
  • 把 / 也放在那里,修改了我的答案。
  • 它工作正常。现在我echo 代码,它的输出是:D:\Softwares Installed\xampp-old\htdocs\aponit\dev/../config/config.php
  • 我的问题是有一个点/../!那么它是如何找到config.php 文件的呢?
猜你喜欢
  • 2011-11-23
  • 1970-01-01
  • 1970-01-01
  • 2021-11-26
  • 2019-03-18
  • 2017-08-27
  • 1970-01-01
  • 2022-01-20
  • 1970-01-01
相关资源
最近更新 更多