【发布时间】:2017-05-19 13:20:17
【问题描述】:
我在基本 php 包含方面遇到了非常令人困惑的问题。
我目前正在开发一个网站的第 2 版,所以我的 index.php 位于
www.mywebsite.co.uk/v2/index.php
我有一个位于里面的数据库配置文件
www.mywebsite.co.uk/v2/assets/database.php
我有一个位于内部的表单操作
www.mywebsite.co.uk/v2/assets/actions/action.php
我需要在我的 action.php 文件中包含我的 database.php 文件,但我似乎找不到正确的包含路径。
我试过了
include "database.php";
include "assets/database.php";
include "../assets/database.php";
include "../../assets/database.php";
include "../database.php";
include "../../database.php";
include "../../../database.php";
include "../../../assets/database.php";
我什至已经开始使用了
include(dirname(__FILE__)."../database.php");
但无论我怎么尝试,都找不到包含文件,并且我的操作页面返回 500 服务器错误。
我做错了什么?
更新
我遇到了最奇怪的问题,我真的不知道发生了什么。
我正常包含所有文件,它们都运行良好,但一旦涉及表单操作文件,包含就拒绝工作。
我在整个站点的标题中包含了一个数据库 OOP 文件,它运行良好。然后我有一个使用 POST 提交到操作文件的表单,一旦我将数据库包含在我的操作文件中,它就会拒绝工作。只有当我使用它才会起作用
dirname(__FILE__)."my/path"
操作文件的位置与我使用包含功能的所有其他文件位于同一文件夹中,因此路径绝对正确,但每当我尝试包含在我的操作文件中时,我都会收到 500 服务器错误,除非我使用 dirname(FILE)."my/path" 方法。
有什么想法吗?
更新 2
出于某种原因,我必须为同一位置的 2 个不同文件使用不同的包含路径。
例如database.php、home-slider.php 和includes.php 都在同一个目录下。如果我希望 database.php 访问我可以使用的包含文件
include "assets/includes.php";
但如果我想使用 home-slider.php 页面访问包含文件,我必须使用
include "../assets/includes.php";
即使它们都在同一个目录中?
【问题讨论】:
-
使用
$_SERVER['DOCUMENT_ROOT'].'/path/to/file'比试图找出相对路径要好得多。 -
我建议你使用这个:
require_once('../../database.php'); -
那个确实有效。请问,为什么我必须使用 dirname() 函数?我知道该函数的作用,但我认为 include 使用当前文件位置作为参考,所以只需 include "../../database.php";但我必须使用 include(dirname(FILE)."../../database.php");
-
您是否修改了您的
.htaccess文件或Apache 的虚拟主机配置?我想知道你是否以某种方式重定向。
标签: php