2014-12-10 97 views
0

當嘗試一個新的服務器上運行梨Mailqueue,我得到這個錯誤信息:無法打開需要MDB2.php

PHP Warning: require_once(MDB2.php): failed to open stream: No such file or directory in /usr/share/php5/PEAR/Mail/Queue/Container/mdb2.php on line 57 
PHP Fatal error: require_once(): Failed opening required 'MDB2.php' (include_path='.:/usr/share/php5:/usr/share/php5/PEAR') in /usr/share/php5/PEAR/Mail/Queue/Container/mdb2.php on line 57 

我感到奇怪的是,該代碼似乎缺少一個名爲「MDB2 .php'(大寫),但導致錯誤的文件被稱爲'mdb2.php'(小寫)。不知道這是否意味着什麼。

據我所知,所有的路徑都是正確的,並在PHP中正確設置。以下是我已經研究和到目前爲止已經試過的診斷步驟進行:

# pear config-get php_dir 
/usr/share/php5/PEAR 

# pear version 
PEAR Version: 1.9.4 
PHP Version: 5.4.20 
Zend Engine Version: 2.4.0 
Running on: Linux myserver 3.11.10-7-default #1 SMP Mon Feb 3 09:41:24 UTC 2014 (750023e) x86_64 

# php --ini 
Configuration File (php.ini) Path: /etc/php5/cli 
Loaded Configuration File:   /etc/php5/cli/php.ini 
Scan for additional .ini files in: /etc/php5/conf.d 
Additional .ini files parsed:  /etc/php5/conf.d/ctype.ini, 
/etc/php5/conf.d/curl.ini, 
/etc/php5/conf.d/dom.ini, 
/etc/php5/conf.d/gd.ini, 
/etc/php5/conf.d/iconv.ini, 
/etc/php5/conf.d/json.ini, 
/etc/php5/conf.d/mbstring.ini, 
/etc/php5/conf.d/mysql.ini, 
/etc/php5/conf.d/mysqli.ini, 
/etc/php5/conf.d/openssl.ini, 
/etc/php5/conf.d/pdo.ini, 
/etc/php5/conf.d/pdo_mysql.ini, 
/etc/php5/conf.d/pdo_sqlite.ini, 
/etc/php5/conf.d/soap.ini, 
/etc/php5/conf.d/sqlite3.ini, 
/etc/php5/conf.d/tokenizer.ini, 
/etc/php5/conf.d/xmlreader.ini, 
/etc/php5/conf.d/xmlwriter.ini, 
/etc/php5/conf.d/zip.ini, 
/etc/php5/conf.d/zlib.ini 

# php -c /etc/php5/cli/php.ini -r 'echo get_include_path()."\n";' 
.:/usr/share/php5:/usr/share/php5/PEAR 

# ls /usr/share/php5/PEAR/Mail/Queue/Container -lsah 
total 100K 
20K -rw-r--r-- 1 root root 18K Dec 10 15:30 --MDB2.php 
4.0K drwxr-xr-x 2 root root 4.0K Dec 10 15:48 . 
4.0K drwxr-xr-x 3 root root 4.0K May 3 2014 .. 
16K -rw-r--r-- 1 root root 15K May 3 2014 creole.php 
16K -rw-r--r-- 1 root root 16K May 3 2014 db.php 
20K -rw-r--r-- 1 root root 20K May 3 2014 mdb.php 
20K -rw-r--r-- 1 root root 18K Dec 10 15:48 mdb2.php 

所以文件是存在的,但如果我可以信任的錯誤消息,預計該文件以大寫字母來命名。我也不知道--MDB2.php文件是什麼。

我試過--MDB2.php文件重命名爲MDB2.php,但後來我得到這個錯誤:

PHP Fatal error: Cannot redeclare class Mail_Queue_Container_mdb2 in /usr/share/php5/PEAR/Mail/Queue/Container/mdb2.php on line 71 

否則,梨似乎被正確安裝和反應終端pear命令......

這是梨或郵件隊列的一個越野車版本或什麼?

- 編輯 -

文件mdb2.php包含早在這條線:

require_once 'MDB2.php'; 

因此,也許有一個應該到別的地方存在該名稱的另一個文件... ?

- 編輯2 -

因爲我看到了另一篇文章引用該信息,也許這將幫助:

# pear list 
Installed packages, channel pear.php.net: 
========================================= 
Package   Version State 
Archive_Tar  1.3.11 stable 
Console_Getopt  1.3.1 stable 
DB     1.8.2 stable 
HTTP_Request  1.4.4 stable 
MDB2    2.5.0b5 beta 
MDB2_Driver_mysql 1.4.1 stable 
MDB2_Driver_mysqli 1.5.0b4 beta 
Mail    1.2.0 stable 
Mail_Mime   1.8.8 stable 
Mail_Queue   1.2.7 stable 
Net_SMTP   1.6.2 stable 
Net_Socket   1.0.10 stable 
Net_URL   1.0.15 stable 
PEAR    1.9.4 stable 
SOAP    0.12.0 beta 
Structures_Graph 1.0.4 stable 
XML_Util   1.2.1 stable 

回答

1

應該有一個文件MDB2.php/usr/share/php5/PEAR

您的瀏覽器中有錯誤嗎?然後Apache上的PHP與你的CLI有不同的php.ini

在代碼中使用set_include_path('.:/usr/share/php5/PEAR');來嘗試它是否有效。如果是這樣,找到apache php.ini文件(通過phpinfo();)並在那裏修改它。

+0

不知道爲什麼......但ubuntu安裝在apache配置下默認不包含'/ usr/share/php /'。不過,對於CLI版本而言。簡單地將它添加到'set_include_path'似乎適用於我。 – TheCompWiz 2015-05-22 19:52:02