【问题标题】:Include issue in PHP在 PHP 中包含问题
【发布时间】:2013-09-14 19:58:40
【问题描述】:

我有几个文件夹:

  • localhost/mysite/inlcudes
  • localhost/mysite/public

...内部包含几个文件:

  • database.php
  • config.php

database.php 中,我创建了一个类来处理所有连接内容。我创建了一个数据库对象。我在同一文件夹中使用test.php 测试了连接和查询。一切正常,但是当我尝试在public/index.php 中测试database.php 时,它告诉我变量未设置。

代码:

<?php
include ('../../includes/database.php');

if (isset($database)) {
   echo"working";
} else {
   echo "not";
}

结果:

not

【问题讨论】:

  • 你检查你的 PHP 日志了吗?
  • 始终确保您使用的相对路径基于您正在使用的文件的当前目录,使用 __DIR__ . /relative/path/file.php
  • 如果您需要一个文件来运行您的脚本,请考虑使用require(或require_once)而不是include。这样,如果找不到文件,您将收到一条错误消息。

标签: php mysql class object include


【解决方案1】:

你试过用include_once('your_path') 代替include('your_path') 吗?

【讨论】:

  • 是,数据库连接失败:php_network_getaddresses: getaddrinfo failed: No such host is known.
  • 终于解决了,只需要在php.ini中修改allow_url_include = On
  • 是的,你必须为你的 php.ini 的 allow_url_include 设置状态,因为这个测试检查 allow_url_include 是否被启用。请注意,此设置仅在 PHP 5.2 之后可用,因此如果您的版本较旧,则不会运行测试。默认情况下,allow_url_include 被禁用。该设置也可以在 apache 的 httpd.conf 文件中启用/禁用: # For Enable allow_url_include php_flag allow_url_include off
【解决方案2】:

好吧,如果您的数据库文件位置是“localhost/mysite/inlcudes/database.php”,而您的索引文件位置是“localhost/mysite/public/index.php”,那么您似乎只需向后移动一个目录.

所以包含函数应该是这样的

include("../includes/database.php");

【讨论】:

  • 在这种情况下 include("../includes/database.php");我收到错误:-数据库连接失败:php_network_getaddresses:getaddrinfo 失败:不知道这样的主机。
  • 看起来您正在使用的 MySQL 类正在删除此错误。 如果您的 MySQL 服务器在同一台机器上,您应该将 MySQL 主机更改为 127.0.0.1 或本地主机。
  • 当我使用包含文件夹中的 test.php 对其进行测试时,它可以正常工作所有类型的查询。
  • 终于解决了,只需要在php.ini中修改allow_url_include = On
【解决方案3】:

您的包含文件可能没有正确发生...您可以尝试使用 realpath 调试您的“../..”路径。

这样开始

var_dump(realpath('../'));
var_dump(realpath('../../'));
var_dump(realpath('../../includes'));
var_dump(realpath('../../includes/database.php'));

如果没有返回任何内容,则表示该路径不存在...

【讨论】:

  • 1)string(24) "C:\xampp\htdocs\mysite 2)string(15) "C:\xampp\htdocs 3)bool(false) 4)bool(false)跨度>
  • 您应该在调试时激活您的错误(或检查您的 php 日志)。错误将在浏览器中输出。 ini_set('display_errors','on');错误报告(E_ALL);您的包含路径错误,如上所述,正确的路径似乎是 ('../includes/database.php');。如果找不到脚本,使用 require 将“停止”,并且错误将更容易修复/跟踪...
  • 当我使用 include 'C:\xampp\htdocs\mysite\includes\database.php';它正在工作!!!!
猜你喜欢
  • 2011-06-27
  • 1970-01-01
  • 1970-01-01
  • 2011-12-21
  • 2013-08-01
  • 2013-11-09
  • 2011-08-13
相关资源
最近更新 更多