2017-08-14 10 views
0

私は何かに遭遇しました。 PHPをクリーンインストールしたクリーンなCentOSマシンがあります。 mongoDBドライバもインストールされていました。ブラウザを介してWebアプリケーションにアクセスすると、mongoクライアントが存在しないと不平を言っていました。すべてのインストール手順に続き、php.iniにはextension=mongo.soが含まれ、httpdが再起動されました。 PHP info()にはMongo confが含まれていませんでした。どのファイルがmongo.iniというファイルを/etc/php.dディレクトリに追加し、extension=mongo.soというファイルが書き込まれました。PHP - - ini "(none)"と拡張子をロードしない

私は卑劣な疑惑を得ていますphp.iniは正しく読み込まれていませんでしたが、なぜ私は理解できません。私がこれを考えている理由は、1つは、mongo.iniを追加した後です。第二に、CLIとブラウザGUIからの出力が一致しないPHP info()があります。

cli output

及びGUI

gui output

からこれらの両方が離れスナップ秒でした。構成の変更や再起動は行われませんでした。なんらかの理由で、CLI出力には、ロードされたコンフィギュレーションファイルが予期された/etc/php.iniであったことが示されます。ただし、ブラウザのGUIには(none)と表示されます。ここで何が起こっているのですか?これがextension=mongo.sophp.iniファイルからロードされることはなかったのですか?

バージョン

Apache/2.4.6 
PHP/5.4.16 
CentOS Linux release 7.3.1611 

[[email protected] etc]# find/-name php.ini 
/etc/php.ini 

SOこのためにも適切な場所ですか?または私は別のフォーラムに移動する必要がありますか?

更新

Grigory Ilizirovさんのコメントを読んで、そしていくつかの研究を行った後、私は彼がそれを投稿したい場合は、質問を答えていると思います。 apacheのPHP設定がロードされていないように見えます。私はちょうど/etc/php.iniファイルが編集に必要なものだと仮定していました。今私はちょうど私がそれをやろうとしている方法を理解する必要があります。

更新2

は戻ってクリーンインストールに戻って、もう一度すべてをしました。今度は、CLIとウェブGUIの結果と同じ結果が出ましたが、mongoは/etc/php.d/mongo.iniに追加されても全くロードされませんでした。 SELinuxがApacheに干渉している疑いがあります。 mongo.iniは、追加の.iniファイルセクションに表示されなくなりました。 SELinuxを無効にして再起動すると、Apacheにロードできます。

FINAL

これは確かにSELinuxの問題です。今、これは将来のユーザーのためにSOに属していますか?

+0

あなたは、Apacheを使用していますか? –

+0

@GrigoryIlizirovはい。 apache 2.4.6 – mahbad

+1

あなたは\ apache \ apahce2.4.6 \ bin \ php.iniにあるphp.iniを編集する必要があります... cli用のphpとweb用のphpは異なります –

答えて

0

実際にSELinuxがApacheのPHP設定ファイルへのアクセスを妨害していました。セキュリティコンテキストを追加することで修正されました。

semanage fcontext -at httpd_sys_content_t '/etc/php.ini' 
semanage fcontext -at httpd_sys_content_t '/etc/php.d/(/.*)?' 
restorecon -Rv /etc/ 
systemctl restart httpd 

apache found the config file

0

PHPがMongoDB extensionをインストールしていることを確認する必要があります。PHP -mを使用して、MongoDBがインストールされているか確認してください。

次に、ソースコードをhttps://github.com/mongodb/mongo-php-driver-legacyからダウンロードしてください。

は、拡張機能をインストールするために、次の手順に従います。

tar zxvf mongo-x.x.x.tgz -C ../ 
cd mongo-x.x.x/ 
phpize 
./configure --with-php-config=/usr/local/php/bin/php-config 
make clean 
make 
make install 
extension=mongo.so //add this line to php.ini 

の後、もう一度試して実行PHP -mをインストール拡張が成功をインストールしている場合参照してください。

詳細については、PHPのドキュメントをお読みください。 http://php.net/manual/en/mongo.installation.php#mongo.installation.fedora

+0

mongoのインストールに 'pecl'が使われました。 mongoは今正しく動作しています。私が理解しようとしているのは、 '/ etc/php.d/mongo.ini'に' extension = mongo.so'を追加したのと対比して、 '/ etc/php.ini'あなたとドクターが述べたように? – mahbad

関連する問題