Я строю проект Symfony 1.4, и я пытаюсь использовать пакет PEAR Crypt_RSA. К сожалению, пакет не обновлялся за некоторое время, поэтому вместо того, чтобы делать простой pear install
из командной строки, я хочу включить его в свой путь проекта lib/vendor
, чтобы я мог модифицировать различные фрагменты кода для использования в PHP5. (В настоящее время он вызывает некоторые предупреждения и строгие ошибки, и я не хочу отключать строгую проверку ошибок).Файлы для автозагрузки Symfony, похоже, не работают
Я создал autoload.yml
файл в моем config
пути, который теперь содержит следующее:
autoload:
Crypt_RSA:
path: %SF_LIB_DIR%/vendor/Crypt
recursive: true
я затем пытаться использовать класс Crypt_RSA_KeyPair (source) следующим образом:
$keyPair = new Crypt_RSA_KeyPair(128);
Это приводит к следующей ошибке:
Warning: require_once(Crypt/RSA/ErrorHandler.php) [ function.require-once ]: failed to open stream: No such file or directory in /app_path/lib/vendor/Crypt/RSA/KeyPair.php on line 28
Fatal error: require_once() [ function.require ]: Failed opening required 'Crypt/RSA/ErrorHandler.php' (include_path='.:/opt/local/lib/php') in /app_path/lib/vendor/Crypt/RSA/KeyPair.php on line 28
Заглядывая в файл Crypt/RSA.php (source), он имеет вызовы require_once для Crypt/RSA/ErrorHandler.php, Crypt/RSA/MathLoader.php, Crypt/RSA/Key.php и Crypt/RSA/KeyPair .php, поэтому я думаю, что я не хочу, чтобы symfony автоматически загружал все (т. е. не рекурсивно автозагружался) - только файл RSA.php. Тем не менее, вызовы require_once специфичны для папки, содержащей папку Crypt, что означает, что автозагрузка должна убедиться, что при загрузке RSA.php она загружает ее из соответствующего пути, так что каждый из этих файлов может быть загружен правильно.
Имея это в виду, я попробовал несколько различных установок, не повезло:
autoload:
Crypt_RSA:
path: %SF_LIB_DIR%/vendor
files: [Crypt/RSA.php]
recursive: false
и:
# moved "Crypt" folder into a subfolder named "pear"
autoload:
Crypt_RSA:
path: %SF_LIB_DIR%/vendor/pear
recursive: false
Каждая из этих новых попыток в результате другой ошибки при этом класс Crypt_RSA_KeyPair был просто не нашли вообще.
Fatal error: Class 'Crypt_RSA_KeyPair' not found in /app_path/lib/model/doctrine/sfDoctrineGuardPlugin/sfGuardUser.class.php on line 70
Я пытался копаться в документации, но большинство моих поисков Google указывают на Symfony документы на 1.0, а не 1.4, а также все документы, как правило, расплывчаты на файлах самозарядные поставщика.
Я полагаю, что другой вариант будет требовать вручную require_once файла RSA.php, который мне нужен, но я предполагаю, что это будет нарушать соглашение Symfony и, вероятно, делать что-то более сложное, чем я должен быть (хотя эта автозагрузка кажется быть сложнее, чем это должно быть слишком).
Отлично, спасибо! –
Просто сообщила, что это определенно сделало трюк для меня. Я очень ценю помощь :) –