Не удалось открыть MDB2.php

0

При попытке запустить 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
Теги:
pear

1 ответ

1

Должен быть файл MDB2.php в /usr/share/php5/PEAR.

У вас есть ошибка в вашем браузере? Тогда PHP на apache имеет другой php.ini чем ваш CLI.

Используйте set_include_path('.: /usr/share/php5/PEAR'); в вашем коде, чтобы попробовать, если он работает. Если это так, найдите файл apache php.ini (через phpinfo();) и измените его там.

  • 0
    Не уверен, почему ... но установка ubuntu, по-видимому, не включает /usr/share/php/ по умолчанию в конфигурации apache. Тем не менее, для версии CLI. set_include_path кажется, что простое добавление его в set_include_path работает для меня.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню