【问题标题】:Assigning the return value of new by reference is deprecated in通过引用分配 new 的返回值在
【发布时间】:2011-07-18 18:50:45
【问题描述】:

我是 PHP 新手,我正在玩一些代码,看看我可以学习/做什么。我有一个简单的小项目,我正在连接到 mysql 数据库并显示表的记录。

当我将所有代码放在一个文件中时,一切都运行顺利,只要我尝试将一大块代码放在一个单独的 PHP 文件中并使用 include 或 require_once 我得到错误 Assigning the return value of new by参考在...PEAR\config.php yadda yadda

中已弃用

我已经进行了一些研究,并且我知道在 PHP 5 中不再接受通过引用传递对象 (&obj),这很好,但是在我的代码中没有一个 & 符号,再次,一切正常很好,如果它们都在同一个 .php 文件中。所以我想我的包含或其他东西可能做错了什么。

这是我用 require_once 从我的主页调用的“完成工作”的文件

include '/config.php';
// Open the database connection

$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ('Error connecting to mysql');
mysql_select_db($dbname);

        //Define and run the query
        $query = "SELECT * FROM wp_posts";
    $result = mysql_query($query);

    echo mysql_error();

        //Close the db connection
    mysql_close();

    echo "<table><tr><td>Post Title</td><td>Post Status</td><td>Post Date</td></tr>";

        //Loop through result set and display data

        while($tdata=mysql_fetch_array($result))
        {
            echo "<tr><td>$tdata[post_title]</td><td> $tdata[post_status]</td><td> $tdata[post_date]</td></tr>";     // name class and mark will be printed with one line break
    }

        echo "</table>";

无论如何,我知道我的代码并不漂亮,我仍在努力解决所有问题。感谢您提供的任何帮助。

附加信息: 好的,我知道我是一个完整的菜鸟,我很抱歉。还不能完全理解这一切。但这里有一些额外的信息。这是我收到的错误消息的全文(注意:我的代码仍在运行,我的表格仍然显示)

不推荐使用:在第 80 行的 C:\xampp\php\PEAR\Config.php 中不推荐使用通过引用分配 new 的返回值

不推荐使用:在第 166 行的 C:\xampp\php\PEAR\Config.php 中不推荐使用通过引用分配 new 的返回值

不推荐使用:在第 111 行的 C:\xampp\php\PEAR\Config\Container.php 中不推荐使用通过引用分配 new 的返回值

再次,我使用 netBeans 作为我的 IDE,所以在我的 Netbeans 中,我转到 Tools-Options 并转到 PHP 并将 C:\xampp\php\PEAR 设置为全局包含路径(不管这意味着什么,但尽管如此,这似乎是个好主意)。

我想如果我的包含路径设置正确(/xampp/php...),那么为什么我仍然收到错误。嗯。感谢大家的帮助。

【问题讨论】:

  • 问题似乎出在PEAR\config.php。这是文件吗? (我不这么认为)

标签: php reference


【解决方案1】:

这是您使用的第三方库导致问题的原因,它已经过时,并且正在使用诸如通过引用返回之类的东西,这不再被认为是好的做法。您应该升级有问题的库。从你写的我猜是这个图书馆。 http://pear.php.net/package/Config/redirected

尝试从 shell 运行 pear upgrade config

【讨论】:

  • 我在 Windows 上使用 netbeans 6.5,我对库等有点一无所知。我安装了具有 PHP 5.3.5 的 XAMPP 1.7.4(我想)能帮我多一点吗?
  • Pear 是 PHP 代码库的集合,您可以在自己的项目中使用它们。 pear.php.net PEAR 库(无论如何在 Linux 和 Mac OS 中,不确定 Windows)是从命令行管理的。您可以使用命令行工具安装、升级或删除库,它们存储在一个可随时用于 include() 的目录中,以便可以在多个 PHP 项目之间共享给定库的一个副本。我已经很久没有在 Windows 上使用 PHP 并且从未在那个平台上使用过 PEAR,所以恐怕我能提供的帮助就这么多了。
【解决方案2】:

您的包含路径可能设置错误。

该脚本似乎更喜欢 PEAR 包含目录而不是当前工作目录。 有几种方法可以解决这个问题:

1.使用绝对包含

例如,在您的情况下:

include dirname(__FILE__) . 'config.php'; // pre-PHP 5.3
include __DIR__ . 'config.php'; // PHP 5.3

2。更改包含路径

要了解更多信息,请参阅 php.net 文档中的 this page

【讨论】:

  • 好的,所以在 PHP.ini 我有这个; Windows: "\path1;\path2" include_path = ".;C:\xampp\php\PEAR" 我应该把它改成什么?只需删除 PEAR?
  • 这已经是包含路径的正确顺序了。请务必查看是否包含正确的文件。
  • 这帮助了我,它导致了错误“不推荐使用通过引用分配新的返回值”但感谢这篇文章,我设法使用“include DIR .'config.php';"
  • 在 php.ini ;include_path = ".:/php/includes" 中评论该行对我来说是正确的解决方法。其他方法没有退出工作
【解决方案3】:

打开您的 config.php 并转到第 89 行并删除 = 之后的 &amp;

来自:

"$this->container =& new Config_Container('section', 'root');"

到:

"$this->container = new Config_Container('section', 'root');"

第 166 行也是如此。

【讨论】:

    【解决方案4】:

    这只是描述分配问题的梨包错误。所以我们通常可以替换 =& 与 = 在错误语句的给定行中。这将解决我们的问题。

    【讨论】:

      【解决方案5】:

      我有类似的问题。解决方法是更改​​文件名。 config.php 在 pear 文件夹中获取一个文件,而不是您的配置文件。

      【讨论】:

        【解决方案6】:

        只需运行 C:\xampp\php\pear-update.bat 并重新启动 Apache 服务器(在 Windows 机器上)。 对于 linux 机器,请遵循 GordonM 的指示。

        【讨论】:

          猜你喜欢
          • 2010-11-08
          • 2011-06-08
          • 1970-01-01
          • 2012-12-21
          • 1970-01-01
          相关资源
          最近更新 更多