ZendFrameworkでのMySQL接続

ZendFrameworkからMySQLにアクセスする問題は初心者を混乱させる可能性があります。エラーメッセージとドライバーの欠如は、Zendで使用されているテクノロジーと原則を理解できなかった場合、明らかにならないためです。

幸い、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を使用できるようになりました。

それほど難しいとは思いませんが、一度座って推測するほど単純ではありません。 要するに、誰が知っていた-蹴らないように、誰が知らなかった-今、あなたは知っている!

Source: https://habr.com/ru/post/J44618/


All Articles