【问题标题】:ERROR 500 Require_once错误 500 Require_once
【发布时间】:2012-04-30 13:01:46
【问题描述】:

这是我的一段 php 代码:

<?php
require_once 'php/Classes/User/UserDataBaseManager.php';
require_once 'facebook/src/facebook.php';
?>

当我尝试在 http:/mydomain/myfile.php 中浏览此代码时,浏览器返回错误 500。

Apache 日志说:

[Wed Apr 18 20:38:07 2012] [error] [client 190.50.81.189] PHP Fatal error: require_once() [&lt;a href='function.require'&gt;function.require&lt;/a&gt;]: Failed opening required 'php/classes/DataBase/DataBaseManager.php' (include_path='.:/usr/share/pear:/usr/share/php') in /var/www/virtuales/blyxo.com/php/Classes/User/UserDataBaseManager.php

解决方案?

【问题讨论】:

  • 确保路径正确且文件存在。然后确保权限正确。我假设 php/ 目录在您需要的目录中?

标签: php apache require-once


【解决方案1】:

我检查了 Apache error.log,发现 dbconn.php 中的 dbname 存在问题,

PHP Fatal error:  Uncaught PDOException: SQLSTATE[HY000] [1049] Unknown database 'study_db' 

然后我更正了数据库名称,它开始工作了。

【讨论】:

    【解决方案2】:

    这在我看来是文件 UserDatabaseManager.php 试图包含 DataBaseManager.php 但它提供了错误的路径。您的 apache 错误表明它将首先查看 . 即当前目录然后 /usr/share/pear 然后 /usr/share/php

    您的 DataBasemanger.php 文件不在最后两个文件中。当它尝试查看当前目录时,它包括您的相对路径。因此,当您的 UserDataBaseManager.php 文件(位于 php/Classes/User/ 中)提供该路径时,apache 最终会在 php/Classes/User/php/classes/DataBase/DataBaseManager.php 中查找您的 DataBaseManager.php 文件

    有几种方法可以解决这个问题。您可以像这样获取文档根目录并将其添加到每个包含中

    $root = $_SERVER['DOCUMENT_ROOT'];
    require_once($root . "/php/classes/DataBase/DataBaseManager.php");
    

    或者,如果此应用程序处于受控环境中,并且您可以编辑 php.ini 文件,您可以定义包含路径以在 /var/www/virtuales/blyxo.com/php/Classes/ 中也查看,并使用

    包含文件
    require_once("Database/DataBaseManager.php");
    

    更好的解决方案可能是定义一个 __autoload 函数,每次您尝试实例化一个新对象时都会调用该函数,并让它使用一些逻辑来查找要包含的文件。这个解决方案需要更多的重组,但您可能会考虑它。这是关于定义自己的自动加载器的文档http://us2.php.net/manual/en/function.autoload.php

    我知道还有其他方法可以做到这一点。告诉我什么对你有用!

    【讨论】:

      【解决方案3】:

      你可以试试

      <?php require_once(dirname(__FILE__) . "php/Classes/User/UserDataBaseManager.php");?>
      

      【讨论】:

        【解决方案4】:

        试试

        echo getcwd();

        找到解决任何路径相关问题的工作路径。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-12-04
          • 2011-10-02
          • 1970-01-01
          • 2016-08-15
          • 2016-08-05
          • 2012-02-18
          • 2023-03-14
          • 1970-01-01
          相关资源
          最近更新 更多