幸い、PHP言語は完全に文書化されており、答えを見つけることはそれほど難しくありません。 一見、ソリューションの説明だけで十分であるという事実にもかかわらず、私はむしろ、この種の問題を自分で解決する方法、つまり、エラーメッセージを読んだ瞬間から完全に機能するコードまでを説明したいと思います。
ツールキット:
-Windows XP Professional(SP2)
-ZendFramework-1.6
-PHPバージョン5.2.6
-サーバー:StpServer 1.0
-MySQL 5.0.51b
データベースを使用していくつかのコードまたはチュートリアルコードのコピーアンドペーストを作成した後、データベースの一部のデータがブラウザに表示されているページにアクセスしようとすると、次のようなエラーが表示されます。
致命的なエラー:T:\ home \ virtual \ zend \ library \ Zend \ Db \ Adapter \ Pdo \ Abstract.php:103 Stack trace:#0 T :\ home \ virtual \ zend \ library \ Zend \ Db \ Adapter \ Abstract.php(389):Zend_Db_Adapter_Pdo_Abstract-> _ connect()#1 ...
最初に思い浮かぶのは、問題の考えられる原因を探してphpinfo()ページを調べることです。
そこで、PDOセクションで、インストールされているPDOドライバーの1つがsqlite2であることがわかります。 この場合、MySQLを使用します。
注: PDO(PHP Data Objects)はPHP言語の拡張機能であり、PHPスクリプトからデータベースにアクセスするためのシンプルで便利なインターフェイスを開発者が使用できるようにします。
PDOはデータベースへの抽象アクセスを提供します。つまり、どのDBMSを使用しても問題ありません。いずれにしても、標準のPDOメソッドを使用してデータを受信し、データベースに書き込みます。
PDOはPHPバージョン5.1に含まれており、PHP 5.0のPECLから拡張機能として入手できます。 PDOはPHP 5カーネルの新しいOO機能を使用し、以前のバージョンのPHPでは機能しません。
ウィキペディア、無料の百科事典から
さて、これでPDOが何であり、実際に何が欠けているかがわかりました。 しかし、もちろん、サーバーアセンブリアドレスには自然な怒りがあります。
ただし、公式のPHPサイトによると、問題はSTPディストリビューションにはありません。
PHP 5.1リリースを実行している場合、PDOおよびPDO_SQLITEがディストリビューションに含まれています。 configureを実行すると自動的に有効になります。
mysqlのドライバーを見つけることは残っています。
同じ公式サイトによると、ファイルには次のように名前を付ける必要があります。
拡張機能= php_pdo.dll
拡張機能= php_pdo_firebird.dll
拡張機能= php_pdo_informix.dll
拡張機能= php_pdo_mssql.dll
拡張機能= php_pdo_mysql.dll
拡張機能= php_pdo_oci.dll
拡張機能= php_pdo_oci8.dll
拡張機能= php_pdo_odbc.dll
拡張機能= php_pdo_pgsql.dll
拡張機能= php_pdo_sqlite.dll
PDBとそのドライバーがPECLの一部としてCで記述されていることを以前に知っていたため、このコミュニティの公式Webサイトにアクセスする必要があります。 PHPサイトのアドレスにプレフィックスpeclを追加するだけです。
http://pecl.php.net/で 、PDOキーワードを「パッケージ」セクションの検索に追加します。
検索結果で、最も関連性の高いアイテムを選択し、必要なページで自分自身を見つけます。 次に、バージョンテーブルで最後の安定版リリースのバージョン番号をクリックし、開いたページでPDO_MYSQLリンクを探します。 明らかに、私たちは正しい軌道に乗っています。
ただし、急いで[最新のダウンロード]リンクをクリックしないでください。ライブラリの最新リリースを確実にダウンロードできますが、ソースでは...です。 はい、PECLページはとても巧妙に配置されています。
Windowsでバイナリにアクセスするには、Available Releasesのバージョンテーブルの最初のアイテム、今度は1.0.2をクリックする必要があります。
ここで、パッケージ情報パッケージの説明には、切望されているリンクがあります。
Windowsバイナリは、 http://pecl4win.php.net/ext.php/php_pdo_mysql.dllにあります。
必要です!
小さなファイルをロードした後、彼らは言うように、物事は帽子の中にあります。 PHPのPECLフォルダーにコピーする必要があります。 私の場合、これはT:\ usr \ local \ Php \ PECL \
最後の作業は、拡張機能セクションのphp.iniでアドオンを登録することです。 適切な場所を見つけるには、pdoという単語で検索を使用することをお勧めします。
結果は、他の拡張機能の中でも、このような行です。
;拡張子= php_msql.dll
拡張機能= php_mysql.dll
拡張機能= php_mysqli.dll
;拡張子= php_oci8.dll
;拡張子= php_openssl.dll
;拡張子= php_oracle.dll
;拡張子= php_pdf.dll
拡張機能= php_pdo.dll
拡張機能= php_pdo_mysql.dll
;拡張子= php_pgsql.dll
;拡張子= php_printer.dll
重要:extension = php_pdo.dllの後に登録する必要があります。PHPはこれらのモジュールを順番に読み込むため、PDOに関連付けられた2行の順序が混同されると、次のメッセージが表示されます。
警告!
PHPスタートアップ:動的ライブラリ '/usr/local/PHP/PECL\php_pdo_mysql.dll'をロードできません-指定されたモジュールが見つかりませんでした。
それがすべての知恵です。
サーバーの再起動に成功した後、ZendFrameworkでMySQLを使用できるようになりました。
それほど難しいとは思いませんが、一度座って推測するほど単純ではありません。 要するに、誰が知っていた-蹴らないように、誰が知らなかった-今、あなたは知っている!