web-dev-qa-db-ja.com

PHPスタートアップ動的ライブラリphp_mongo.dllをロードできません

私はこれの初心者です。 PHPにmongodbドライバーをインストールしようとしています。

Platform: Windows 8.1 64bit.
PHP 5.5.9
Apache/2.4.7

ここの指示に従いました: http://php.net/manual/en/mongo.installation.php#mongo.installation.windows

私はVC11ですべてのphp_mongo.dllファイルを試し、php/extフォルダーに入れました。と追加されましたextension=php_mongo.dll php.iniファイルにありますが、xamppコントローラーでApacheを起動しようとすると、エラーが発生しました。

    Php Startup: Unable to load dynamic library
  'C:\xampp\php\ext\php_mongo.dll' -%1 is not a valid Win32 application.

私はすでにVCコンパイラーのバージョンをphpinfo()内で確認しており、そこに記載されていますMSVC11architecture: x86

誰かが私を助けてくれるといいのですが。ありがとう。感謝します。

13
blitzen12

PHPインストールの正しい.DLLをダウンロードしてください。Apachex86を実行している可能性が高いので、x86をダウンロードしてください_php_mongo.dll_。また、実行中の場合PHP Apacheモジュールとして、thread safe (ts)を選択し、PHPと一致するこのタイプのdllも選択してください。実行しているバージョン。

バージョンが一致している必要があります。一致していない場合、php起動エラーが発生します。これらのMongo DLLを見つける here

これを行ったところ、エラー_libsasl.dll_が見つかりませんでした。 PHPインストールディレクトリにある_libsasl.dll_をApacheインストールディレクトリ(_httpd.exe_がある場所)にコピーしました。次に、Apacheを再起動しました。そしてそれはうまくいった!

52
Kimutai

2017年にこれをググる人のために、PECLパッケージが更新され、現在 http://pecl.php.net/package/mongodb/1.2.9/windows にあります。

そして使用:

extension=php_mongodb.dll 

の代わりに:

extension=php_mongo.dll
11
bzzhuh

コピーC:\xampp\php\libsasl.dllからC:\xampp\Apache\bin\Apacheを再起動してお楽しみください。

5
Stephen Curry

上記を行っても問題が解決しない場合は、代わりに古いバージョンのドライバーを試してください。

それが私のXAMPP/PHP 5.5 on windows 8。

古いドライバーはここにあります: https://s3.amazonaws.com/drivers.mongodb.org/php/index.html

新しいドライバーはここにあります: http://pecl.php.net/package/mongo/1.5.5/windows

あなたも訪問したいかもしれません: https://serverfault.com/questions/563867/mongodb-unable-to-load-driver-on-php

4
user3799019

これは通常、64ビットでサポートされているDLLファイルの64ビットシステムを使用しているためです。しかし、wamp/xamppアーキテクチャは32ビットである可能性があります。 Windowsアーキテクチャではなく、wamp/xamppアーキテクチャに基づいて使用する必要があります。したがって、wamp/xamppアーキテクチャに関連するDLLファイルのバージョンを見つけてください。以下のリンクの解決策は私にとって魅力のように機能しました、

http://grokbase.com/t/gg/mongodb-user/151xpk3fkr/php-5-6-3-with-mongodb-driver-unable-to-load-dynamic-library-not-a- valid-win32-application

このリンクは、wamp/xamppアーキテクチャを見つけるのに役立ちます https://stackoverflow.com/a/22454865/4874281

2
manian

以前のコメントで述べたすべての手順を実行した後、xamppは「.dll」ファイルをロードできない場合があります。 「.dll」ファイルのフォルダのパスをシステム変数のパスとして環境変数に追加してください。

私は同じ問題に直面していましたが、「。dll」ファイルのフォルダーのパスをシステム変数パスとして環境変数に追加した後、それは機能しました。その後、ファイルを見つけることができます。

最後に、それはxamppを停止して「.dll」ファイルをロードする唯一の手順でしたが、そのフォルダーに存在していました。明確に指摘されていないため、多くの場合、このステップを逃します。

1
Luke P. Issac