【问题标题】:PHP include path Server 500 ErrorPHP包含路径服务器500错误
【发布时间】: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";

即使它们都在同一个目录中?

【问题讨论】:

  • PHP include relative path的可能重复
  • 使用$_SERVER['DOCUMENT_ROOT'].'/path/to/file' 比试图找出相对路径要好得多。
  • 我建议你使用这个:require_once('../../database.php');
  • 那个确实有效。请问,为什么我必须使用 dirname() 函数?我知道该函数的作用,但我认为 include 使用当前文件位置作为参考,所以只需 include "../../database.php";但我必须使用 include(dirname(FILE)."../../database.php");
  • 您是否修改了您的.htaccess 文件或Apache 的虚拟主机配置?我想知道你是否以某种方式重定向。

标签: php


【解决方案1】:

如果这是您的文件结构:

v2/
|
|-- assets/
|      |
|      |-- actions/
|      |      |
|      |      |-- action.php
|      |
|      |-- database.php
|
|-- index.php

然后通过在action.php 上添加include '../database.php' 应该可以工作。如果不是,那么您的 PHP 文件可能有问题。您也可以使用require '../database.php'; 来查看会出现哪些错误,因为它会抛出有关 database.php 的错误。

【讨论】:

  • 我的页面出现 2 个错误警告:include(assets/includes.php):无法打开流:mydirectory\v3\assets\home-slider.php 中没有此类文件或目录在第 3 行和警告:include(): Failed opening 'assets/includes.php' for contains (include_path='.;.\includes;.\pear') in mydirectory\v3\assets\home-slider.php 在线3
  • 该文件确实存在于该目录中只是为了澄清,所以我不知道为什么我会收到这个错误。
  • 文件结构是否正确?我更新了我的答案..你为什么不断收到这个错误没有意义。
  • 另外,错误指向assets/includes.php,这与您提到的文件不同。
  • 这是我的文件结构,但我必须在我的操作文件中使用../../database.php。几乎就像我必须在资产文件夹之外导航才能导航回它一样。
猜你喜欢
  • 2014-04-10
  • 2016-06-18
  • 2016-02-11
  • 1970-01-01
  • 2016-06-26
  • 1970-01-01
  • 2016-11-28
  • 1970-01-01
相关资源
最近更新 更多