SymfonyのAutoloadベンダーファイルが機能していないようです
-
22-10-2019 - |
質問
私はSymfony 1.4プロジェクトを構築しています、そして私は梨の使用を試みています 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]:オープンストリームに失敗しました:そのようなファイルやディレクトリはありません /app_path/lib/vendor/crypt/rsa/keypair.php オンライン 28
致命的な誤り: :require_once()[function.require]:失敗したオープニングが必要です 'crypt/rsa/errorhandler.php'(include_path = '。:/opt/local/lib/php')in /app_path/lib/vendor/crypt/rsa/keypair.php オンライン 28
crypt/rsa.phpファイルを調べます(ソース)、crypt/rsa/errorhandler.php、crypt/rsa/mathloader.php、crypt/rsa/key.php、およびcrypt/rsa/keypair.phpを必要としています。すべてをオートロードするSymfony(つまり、再帰的に自動装置されていません) - RSA.PHPファイルのみ。ただし、require_once呼び出しはすべてCryptフォルダーを含むフォルダーに固有のものです。つまり、Autoloadは、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クラスが完全に見つからなかった異なるエラーをもたらしました。
致命的な誤り: :class 'crypt_rsa_keypair'はありません /app_path/lib/model/doctrine/sfdoctrineguardplugin/sfguarduser.class.php オンライン 70
ドキュメントを掘り下げようとしましたが、Googleの検索のほとんどは1.4ではなく1.0のSymfony Docsを指し示しており、すべてのドキュメントは一般的に自動装備のベンダーファイルであいまいです。
別のオプションは、私が必要とするRSA.phpファイルを手動で要求することだと思いますが、私はそれがSymfonyコンベンションを破り、おそらく私がそうあるよりも難しいことをしていると推測しています(この自動装備のことはそれよりも難しいようですがそうでなければなりません)。
解決
crypt_rsaベンダーパッケージ用のカスタムオートローダーを作成し、ProjectConfigurationに登録してみてください。 Jobeetドキュメントで表示されます (Zend Luceneを使用する場合)。