Intereting Posts
Строгие стандарты: нестатический метод Как мы можем использовать шифрование режима GCM в PHP? Поиск с помощью нескольких переменных PHP / Mysql Laravel Загрузка файла Dropbox: InvalidArgumentException в Client.php line 1473: file_get_contents (или завиток или fopen) с данными сеанса Ограничение доступа к сайту с использованием IP-адреса перенаправлять на новую страницу после отправки и проверки формы с помощью php Проблемы с LOCAL INFILE после переключения на mysqli Максимальная длина строки preg_match_all может совпадать и получить? сортировка значения массива без использования встроенных php, таких как sort () и т. д. Временная загрузка файла PHP не действительна Ресурс изображения ajax показывать содержимое mysql один раз Прямая загрузка на s3 без использования производственного сервера Обрезаемая фатальная ошибка: объект класса mysqli не может быть преобразован в строку как получить список ссылок на веб-странице в PHP?

PHP, Zend, require_once: «не удалось открыть поток» и «Не удалось открыть окно ».

Я схожу с ума! Я уже 2-х часов был SO'ing и Googling.

Короче говоря, все работает нормально, а затем я сделал некоторую реструктуризацию класса, и теперь я получаю это:

Warning: require_once(Zend/Mail/Transport/Sendmail.php) [function.require-once]: failed to open stream: No such file or directory in /nfs/c09/h02/mnt/136160/domains/xyz.com/html/sandbox/Zend/Mail.php on line 1175 Fatal error: require_once() [function.require]: Failed opening required 'Zend/Mail/Transport/Sendmail.php' (include_path='.:/usr/local/php-5.3.13/share/pear') in /nfs/c09/h02/mnt/136160/domains/xyz.com/html/sandbox/Zend/Mail.php on line 1175 

Я не касался того, как мои файлы были организованы:

  sandbox/index.php sandbox/settings.php sandbox/lib/class1.php sandbox/lib/class2.php sandbox/lib/class3.php sandbox/Zend/... 

Я только изменил имена классов и их иерархию.

index.php

 <?php require_once 'lib/class1.php'; $application = new class1(); $application->run(); ?> 

class1.php

 <?php require_once 'Zend/Loader.php'; Zend_Loader::loadClass('Zend_Log'); Zend_Loader::loadClass('Zend_Log_Formatter_Simple'); Zend_Loader::loadClass('Zend_Log_Writer_Mail'); Zend_Loader::loadClass('Zend_Log_Writer_Stream'); Zend_Loader::loadClass('Zend_Mail'); // class definition ... ?> 

Ни один из них не require вмешательства во время моей реструктуризации класса. Конкретная проблема (хотя я уверен, что есть более общая проблема) возникает в Zend's Mail.php :

 /** * Sends this email using the given transport or a previously * set DefaultTransport or the internal mail function if no * default transport had been set. * * @param Zend_Mail_Transport_Abstract $transport * @return Zend_Mail Provides fluent interface */ public function send($transport = null) { if ($transport === null) { if (! self::$_defaultTransport instanceof Zend_Mail_Transport_Abstract) { require_once 'Zend/Mail/Transport/Sendmail.php'; $transport = new Zend_Mail_Transport_Sendmail(); } else { $transport = self::$_defaultTransport; } } ... } 

(Обратите внимание, как запрос вызывается только при первой попытке отправить электронное письмо.)

  1. Может ли возникнуть проблема с новым «потоком» или порядком включения? (Так как пути выглядят нормально. Если бы пути были не в порядке, он бы погиб на Loader.php, не так ли?)

  2. Может ли какая-то круговая зависимость какой-то причины вызывать эту проблему, прежде чем она вызвала более «фатальную»?

  3. Может ли имя класса конфликтует с тем, что уже существует? Раньше у меня были некоторые довольно загадочные имена классов, такие как MalaFwk_Application_Receiver. Теперь имена более общие, например CApplication, CComponent, CDatabase, CLogger и т. Д.

Я пробовал различные вещи, предлагаемые в других потоках SO, безрезультатно, но я готов попробовать все, что предлагает. Я извиняюсь заранее, если это не является особенно конструктивным вопросом, но у меня нет идей, и было слишком много (тривиальных, но широко распространенных) изменений, чтобы вернуть и повторно применить изменения в частях. Любая помощь будет принята с благодарностью. (Я вернусь в ~ 8: 45a EST.)

ОБНОВИТЬ:

Если я добавлю следующую строку в index.php , то есть «вручную» потребует файл, прежде чем что-либо еще произойдет, тогда все будет работать снова.

  require_once 'Zend/Mail/Transport/Sendmail.php'; 

Похоже, что по какой-то причине, к моменту, когда код получает send() , он не может найти библиотеку. Что может быть причиной этого?