Я создаю проект Symfony 1.4 и пытаюсь использовать пакет PEAR Crypt_RSA .К сожалению, пакет некоторое время не обновлялся, поэтому вместо простого pear install
из командной строки я хочу включить его в мой путь к проекту lib/vendor
, чтобы можно было изменять различные фрагменты кода для использования вPHP5.(В настоящее время это вызывает некоторые предупреждения и строгие ошибки, и я не хочу отключать строгую проверку ошибок).
Я создал файл autoload.yml
в моем пути config
, который теперь содержит следующее:
autoload:
Crypt_RSA:
path: %SF_LIB_DIR%/vendor/Crypt
recursive: true
Затем я пытаюсь использовать класс Crypt_RSA_KeyPair ( source ) следующим образом:
$keyPair = new Crypt_RSA_KeyPair(128);
Это приводит к следующей ошибке:
Предупреждение : require_once (Crypt / RSA / ErrorHandler.php) [ function.require-Once ]: не удалось открыть поток: нет такого файла или каталога в /app_path/lib/vendor/Crypt/RSA/KeyPair.php в строке 28
Неустранимая ошибка : функция require_once () [.require ]: сбой открытия необходим 'Crypt / RSA / ErrorHandler.php' (include_path = '.: / opt / local / lib / php') в / 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 просто не был найден полностью.
Неустранимая ошибка : класс 'Crypt_RSA_KeyPair' не найден в / app_path / lib / model / doctrine / sfDoctrineGuardPlugin /sfGuardUser.class.php on line 70
Я пробовал копаться в документах, но большинство моих поисков в Google указывают на документы Symfony для 1.0, а не для 1.4и все документы, как правило, расплывчаты в файлах поставщика с автозагрузкой.
Полагаю, другой вариант - вручную требовать_конфигурируемый мной файл RSA.php, но яПонимание этого нарушило бы соглашение Symfony и, вероятно, делало бы что-то сложнее, чем следовало бы (хотя эта функция автозагрузки кажется более сложной, чем должна быть).