При попытке запустить Pear Mailqueue на новом сервере я получаю следующее сообщение об ошибке:
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
команды …
Это глючная версия Pear или Mail Queue или что-то еще?
— редактировать —
Файл 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
Там должен быть файл MDB2.php
в /usr/share/php5/PEAR
,
У вас есть ошибка в вашем браузере? Тогда PHP на Apache имеет другой php.ini
чем ваш CLI.
использование set_include_path('.:/usr/share/php5/PEAR');
в вашем коде, чтобы попробовать, если это работает. Если это так, найдите файл apache php.ini (через phpinfo();
) и измените его там.
Других решений пока нет …