2

テストの目的で、ローカルホストでギアマンを実行しています。そこで、phpコマンドラインからgearmanworker.phpファイルを実行します。これを通常のapacheモードでテストすると、mongoDBは問題なく動作しますが、gearman workerファイルから実行すると、「致命的なエラー:クラス'Mongo'が見つかりません」というエラーが発生します。これで、Mongoクラスはphp.iniのpeclとmongo.so拡張子から取得されます。そうですね、CLIから実行されるphpファイルが異なる理由を理解しようとしています。別のphp.iniファイルを使用していますか?

4

3 に答える 3

5

を実行すると、CLIバージョンによってロードされている.iniファイルを確認できますphp --ini。PHPがディストリビューションによって提供された場合、2つの別個の.iniセット(1つはWebベース用、もう1つはCLI用)を持つ可能性が非常に高くなります。phpinfo()オンラインで実行しているときからも同等の情報を取得できます。

特定の.iniを強制的にロードするには、を使用できますphp -c /path/to/file.ini

于 2010-08-24T14:29:05.687 に答える
0

簡単な検索/-namephp.iniがその質問に答えてくれました。そうです、別のphp.iniファイルがあります。行extension=mongo.soを追加する必要がある場所。

于 2010-08-24T14:41:37.593 に答える
0

異なるiniファイルをロードしているか、マシンにphpの複数のインスタンスがインストールされていて、apacheが別のインスタンスを使用しているようです。スクリプトv.phpを作成します。

<?php phpinfo();

次に、CLIから実行してから、ローカルホスト経由で表示してみてください。例えば:

php v.php

http://localhost/v.php

于 2010-08-24T14:41:51.033 に答える