【问题标题】:PHP PEAR Call to undefined method System::tmpdir()PHP PEAR 调用未定义的方法 System::tmpdir()
【发布时间】:2015-04-19 18:21:35
【问题描述】:

我在两台服务器上拥有相同的 PHP、PEAR 和 ZEND 引擎版本。在一台服务器上一切正常,在第二台服务器上我下载了一个空的 .xls 文件。如果我打开 error_reporting,那么在我的 .xls 文件中会出现以下错误:

致命错误:调用未定义的方法 System::tmpdir() in /var/www/kasa/packages/OLE/PPS/File.php 在第 50 行。

File.php 中的第 50 行看起来:

$this->_tmp_dir = System::tmpdir();

在 System 类中,我有方法 tmpdir()

function tmpdir() {
        if (OS_WINDOWS) {
            if ($var = isset($_ENV['TMP']) ? $_ENV['TMP'] : getenv('TMP')) {
                return $var;
            }
            if ($var = isset($_ENV['TEMP']) ? $_ENV['TEMP'] : getenv('TEMP')) {
                return $var;
            }
            if ($var = isset($_ENV['USERPROFILE']) ? $_ENV['USERPROFILE'] : getenv('USERPROFILE')) {
                return $var;
            }
            if ($var = isset($_ENV['windir']) ? $_ENV['windir'] : getenv('windir')) {
                return $var;
            }
            return getenv('SystemRoot') . '\temp';
        }
        if ($var = isset($_ENV['TMPDIR']) ? $_ENV['TMPDIR'] : getenv('TMPDIR')) {
            return $var;
        }
        return realpath('/tmp');
    }

为什么在一台服务器上一切正常,而在另一台服务器上却出现错误?

【问题讨论】:

  • 愚蠢的问题,但你确定你没有超过一个系统类。此外,您应该将此方法指定为publicstatic。 - 编辑对不起,这是一个凌乱的评论
  • 另外,您确定 System 类的文件已包含/需要吗?我希望错误消息会有所不同,但如果没有其他工作,则值得检查。

标签: php pear


【解决方案1】:

您可能有多个 System 类,并且您的 include_paths 在每台服务器上都不同 - 首先检测到 PEAR 的 System.php 并且一切正常,而另一个则没有。

您应该比较这些,甚至只是执行“echo get_include_path();” 看看你发现了什么不同。

【讨论】:

    猜你喜欢
    • 2012-07-27
    • 2018-04-11
    • 2020-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多