私はSymfony1.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クラス(ソース)を利用しようとします。
$keyPair = new Crypt_RSA_KeyPair(128);
これにより、次のエラーが発生します。
警告:require_once(Crypt / RSA / ErrorHandler.php)[ function.require-once ]:ストリームを開くことができませんでした:28行目の/app_path/lib/vendor/Crypt/RSA/KeyPair.phpにそのようなファイルまたはディレクトリはありません
致命的なエラー:require_once()[ function.require ]: / app_path / lib / vendor /Crypt/でrequired'Crypt / RSA / ErrorHandler.php'(include_path ='。:/ opt / local / lib / php')を開くことができませんでした28行目のRSA/KeyPair.php
Crypt / RSA.phpファイル(ソース)を調べると、Crypt / RSA / ErrorHandler.php、Crypt / RSA / MathLoader.php、Crypt / RSA / Key.php、およびCrypt / RSA/KeyPair.phpのrequire_once呼び出しがあります。 、だから私は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の70行目に見つかりません
私はドキュメントを掘り下げてみましたが、私のGoogle検索のほとんどは1.4ではなく1.0のSymfonyドキュメントを指しており、すべてのドキュメントは一般的にベンダーファイルの自動読み込みについてあいまいです。
別のオプションは、必要なRSA.phpファイルを手動でrequire_onceすることだと思いますが、それはSymfonyの規則に違反し、おそらく私がすべきよりも難しいことをしていると思います(この自動読み込みはそれよりも難しいようですが)あまりにもあるはずです)。