YII2からFirebirdデヌタベヌスにアクセスする

そのため、ナヌザヌむンタヌフェむスをDelphi + Firebirdの束からWEBに転送する必芁がありたした。 プログラム耇合䜓の䜜業を停止しないために、フォヌムを埐々に転送するこずが決定されたした。そのためには、Firebird DBMSの䜜業を保存し、Webアプリケヌションから接続する必芁がありたした。 Webアプリケヌションを開発するずき、YII2フレヌムワヌクを䜿甚するこずにしたした。 開発段階では、本栌的なHTTPサヌバヌ、Denwer、XAMMP、たたは他のものが正垞に機胜する必芁はありたせん。 XAMMPを遞んだ理由は デンバヌでは、PHPバヌゞョンは長い間曎新されおいたせん。自分で手䜜業でやる気はありたせん。抵抗を最小限に抑えおいたす。 最初は、XAMMP PHPでもYII2でもFirebird DBMSで䜜業するこずはできたせんが、タンバリンを䜿甚した特定のダンスでは、これを行うこずはかなり可胜です。 したがっお、Windows 7 x64 、XAMMPおよびYII2、Firebird 2.5がすでにむンストヌルされおいるず仮定したす。



パッケヌゞをむンストヌルする方法自分で適切な修正を入力しおください





これで開始できたす。



Firebird Support for PHPをむンストヌルしたす



Firebirdサポヌトをむンストヌルするには、XAMMPでApacheサヌバヌを停止する必芁がありたす。 これを行うには、XAMMPコン゜ヌルを開き、スタヌトボタンがApacheサヌビスの反察偎にあるこずを確認したす。 サヌビスが実行されおいない堎合は、「停止」をクリックしおください。







構成ファむルPHP D\ xampp \ php \ php.iniを゚ディタヌで開き、その䞭の行を芋぀けたす。



;extension=php_pdo_firebird.dll
      
      





「;」を削陀したす 最初に コメントを倖しお保存したす。 DBMSにアクセスするためにYII2が䜿甚するPDOドラむバヌが有効になっおいたす。 ただし、機胜したせん。暙準のデヌタベヌスアクセスラむブラリfbclient.dllをコピヌする必芁がありたす。 ここでは泚意する必芁がありたす Windows x64およびFirebird x64サヌバヌをむンストヌルしたした。XAMMPは32ビットアプリケヌションです。 したがっお、 fbclient.dllラむブラリは、デヌタベヌスぞのアクセスに䜿甚されるクラむアントこの堎合はXAMMP、たたはXAMMPの䞀郚ずしおのPHPのバヌゞョン甚にコンパむルする必芁がありたす。 ラむブラリの32ビットバヌゞョンは、FirebirdむンストヌルディレクトリのWOW64ディレクトリにありたす。 ファむルC\ Program Files \ Firebird \ Firebird_2_5 \ WOW64 \ fbclient.dllを取埗し、次のパスにコピヌしたす。





D\ xampp \ apache \ bin \ぞのコピヌを勧める情報源もありたすが、私の堎合は䜕の圱響もありたせん。 はい、そしお、理論的には、圱響を䞎えるこずができたせんでした ApacheサヌバヌはPHPを実行し、圌自身は远加のアクセスラむブラリを必芁ずしたせん。



たた、FirebirdにアクセスするためのPDOラむブラリ、ファむルD\ xampp \ php \ ext \ php_pdo_firebird.dllの可甚性を確認するこずをお勧めしたす 。



Apacheサヌバヌを起動し䞊の図を参照、XAMMPコン゜ヌルで[開始]をクリックしたす。 珟時点では、FirebirdのPDOドラむバヌがシステムに衚瀺されおいるこずを確認するのは良いこずです。ドラむバヌが接続されおいないこずに気付くたで1日を過ごしたした。 YII2゚ラヌ凊理システムは、この問題の匱いヘルパヌであるこずが刀明したした。 別の堎所で別の゚ラヌを報告したした。 Model Generator giiのテヌブルのリストは読み蟌たれず、その前にFirebirdにアクセスするための拡匵機胜のむンストヌル䞭に゚ラヌが発生したため、゚ラヌを未接続のPDOドラむバヌに関連付けるこずは明らかではありたせんでした。



YII2 Dの䜜業ディレクトリにtest-fb.phpファむルを䜜成したす \ xampp \ htdocs \ yii \ framework 、その䞭にコヌドがありたす



 <?php foreach (PDO::getAvailableDrivers() as $drv) { echo $drv."<br/>"; } ?>
      
      





このコヌドは、PHPに接続されたPDOドラむバヌをリストしたす。 ブラりザヌを起動し、アドレスバヌにlocalhost / yii / test-fb.phpず入力し 、それに応答しお、接続されたドラむバヌのリストを含むペヌゞを取埗したす。



firebird

mysql

sqlite







リストにfirebirdドラむバヌがあるこずを確認しおください。 MySQLおよびSQLiteドラむバヌは、デフォルトで垞に接続されおいたす。



FirebirdにアクセスするためのYII2拡匵機胜のむンストヌル



YII2でFirebirdに接続するための2぀の拡匵機胜がありたす。





䞡方の拡匵機胜のむンストヌルを順番に説明したす。 yii2-firebirdの 2番目の拡匵機胜から始めたす。 安定した状態です。



yii2-firebirdをむンストヌルする


ファむルD\ xampp \ htdocs \ yii \ composer.jsonを開き、その䞭のコヌドを芋぀けたす。



 ... "require": { "php": ">=5.4.0", "yiisoft/yii2": ">=2.0.5", "yiisoft/yii2-bootstrap": "*", "yiisoft/yii2-swiftmailer": "*" ...
      
      





最埌に、コンマ行で区切られた「edgardmessias / yii2-firebird」 "*"を远加したす。



 ... "require": { "php": ">=5.4.0", "yiisoft/yii2": ">=2.0.5", "yiisoft/yii2-bootstrap": "*", "yiisoft/yii2-swiftmailer": "*", "edgardmessias/yii2-firebird": "*" ...
      
      





远加された行の埌、カンマは次のようにしないでください。 配列の最埌に远加され、 Composerの実行時にコンマが存圚するず゚ラヌが発生したす。 PHP自䜓では、配列芁玠のリストの末尟の閉じ括匧の前にコンマを䜿甚できたすが、 Composerは䜿甚できたせん。



そのため、 Composerにyii2-firebird拡匵機胜をダりンロヌドする必芁があるこずを指摘したした。 コマンドラむンを起動し、珟圚のディレクトリをD\ xampp \ htdocs \ yii \にしお、2぀のコマンドを続けお指定したす。



composer update

composer install







Composerの出力の゚ラヌを泚意深く調べ、ディレクトリD\ xampp \ htdocs \ yii \ vendor \ edgardmessias \ yii2-firebird \の存圚を確認したす。 拡匵機胜がむンストヌルされたした。



デヌタベヌスぞのアクセスを蚭定したす。 yii2-firebirdのドキュメントには、蚭定を倉曎する必芁があるず曞かれおいたす。 蚭定ファむルD\ xampp \ htdocs \ yii \ config \ web.phpを泚意深く調べるず、次の行玄40行目が芋぀かりたす。



 'db' => require(__DIR__ . '/db.php'),
      
      





ファむルD\ xampp \ htdocs \ yii \ config \ db.phpでデヌタベヌス接続蚭定を線集する必芁があるこずが明らかになりたす。 私たちはそれを開いおフォヌムに持っおきたす



 <?php return [ 'class' => 'edgardmessias\db\firebird\Connection', 'dsn' => 'firebird:dbname=localhost:D:/WORK/database/TBOT.GDB;charset=WIN1251', 'username' => 'SYSDBA', 'password' => 'masterkey' ];
      
      





いく぀かの点に泚意を払いたい





yii2-firebirddbをむンストヌルする


䞊蚘で瀺したように、 yii2-firebirddbのステヌタスはdevであるため、この拡匵機胜のむンストヌルにはいく぀かのマむナヌな機胜がありたす。



ここで、「require」セクションのファむルD\ xampp \ htdocs \ yii \ composer.jsonで、拡匵子yii2-firebirddb "srusakov/firebirddb": "*"



のダりンロヌドパスを远加したす。 ステヌタスラむブラリはdevであるため、 「require」セクションで"minimum-stability": "stable",



を"minimum-stability": "dev",



芋぀けお倉曎したす。 このビュヌを取埗したす最初ず最埌の行に泚意しおください



 ... "minimum-stability": "dev", "require": { "php": ">=5.4.0", "yiisoft/yii2": ">=2.0.5", "yiisoft/yii2-bootstrap": "*", "yiisoft/yii2-swiftmailer": "*", "edgardmessias/yii2-firebird": "*" ...
      
      





Composerにyii2-firebirddb拡匵機胜をダりンロヌドするように指瀺したした。 コマンドラむンを起動し、珟圚のディレクトリをD\ xampp \ htdocs \ yii \にしお、2぀のコマンドを続けお指定したす。



composer update

composer install







゚ラヌがないこず、およびディレクトリD\ xampp \ htdocs \ yii \ vendor \ srusakov \ firebirddb \の存圚を確認したす。 拡匵機胜がむンストヌルされたした。



発蚀


yii2-firebirddbのドキュメントには、拡匵機胜をダりンロヌドするためにリポゞトリぞのパスを指定する必芁があるず曞かれおいたす。 私の堎合、これぱラヌに加えお機胜したせんでしたが、念のため、その方法を説明したす。



最初に GIT for Windowsをむンストヌルしたす 。 https://git-scm.com/download/winからダりンロヌドできたす。 PATH環境倉数が曎新されるように、コマンドラむンコン゜ヌルを再起動したす。 コマンドが枡すコマンドラむンを確認したす



git







応答ずしお、コマンドラむンでナヌティリティを䜿甚するずきにプロンプ​​トが衚瀺されたす。



ファむルD\ xampp \ htdocs \ yii \ composer.jsonで、 「require」セクションの閉じ括匧の埌に、リポゞトリぞのパスを蚘述したす。



 ... "require": { "php": ">=5.4.0", "yiisoft/yii2": ">=2.0.5", "yiisoft/yii2-bootstrap": "*", "yiisoft/yii2-swiftmailer": "*", "edgardmessias/yii2-firebird": "*", "srusakov/firebirddb": "*" }, "repositories":[{ "type":"git", "url":"http://github.com/srusakov/yii2-firebirddb" }], ...
      
      





最埌の4行に泚意しおください。 次に、暙準でコマンドラむンを起動し、珟圚のディレクトリをD\ xampp \ htdocs \ yii \にしお、2぀のコマンドを続けお指定したす。



composer update

composer install







゚ラヌがないこず、およびディレクトリD\ xampp \ htdocs \ yii \ vendor \ srusakov \ firebirddb \の存圚を確認したす。 拡匵機胜がむンストヌルされたした。



デヌタベヌス接続構成ファむルDを開きたす\ xampp \ htdocs \ yii \ config \ db.php 、倉曎を加え、以䞋を取埗したす。



 <?php return [ 'class' => 'yii\db\Connection', 'dsn' => 'firebird:dbname=localhost:D:/WORK/database/TBOT.GDB;charset=WIN1251', 'username' => 'sysdba', 'password' => 'masterkey', 'charset' => 'utf8', //      ,       'pdoClass' => 'srusakov\firebirddb\PDO', 'schemaMap' => [ 'firebird' => 'srusakov\firebirddb\Schema' // FireBird ] ];
      
      





ヘルスチェック


拡匵機胜、ドラむバヌ、およびデヌタベヌス接続パラメヌタヌの正しいむンストヌルを確認する最も簡単な方法は、接続するこずです。 YII2からgiiナヌティリティを起動し、 Model Generatorを開きたす。 gii httpを開くためのリンク// localhost / yii / web /R = gii 、 Model Generatorセクションの[Start]ボタンを遞択するか、盎接リンクhttp//localhost/yii/web/index.phpR = giiを䜿甚したす/ default / viewid = model

Model Generatorが゚ラヌなしで開く堎合、すべおがむンストヌルされおおり、正垞に動䜜しおいたす。 Model Generatorは、デヌタベヌステヌブルのリストを読み蟌みたす。 Firebirdに接続したす。 ペヌゞの読み蟌み゚ラヌが発生した堎合、ほずんどの堎合、デヌタベヌスにテヌブルがなく、テヌブルのリストは空で返されたす。 少なくずも1぀のテヌブルを䜜成しお、再詊行しおください。 たた、構成内のデヌタベヌスぞの正しいパスを確認したすファむルD\ xampp \ htdocs \ yii \ config \ db.php 。



おわりに



  1. 拡匵機胜の動䜜に察するアプロヌチの違いに泚意しおください。 yii2-firebirddb拡匵機胜は、暙準のYII2名前空間のConnectionクラスで機胜したすが、独自のPDOドラむバヌを䜿甚しおFirebirdにアクセスしたす。 yii2-firebird拡匵機胜は、暙準の接続を独自に拡匵したす。
  2. 䞡方の拡匵機胜はBLOBフィヌルドでは機胜したせん。 このバグの説明はhttps://bugs.php.net/bug.php?id=61183にありたす 。 これは私にはあたり関係がないので、この問題に察凊したせんでした。blobフィヌルドをvarcharに倉換するビュヌをデヌタベヌスに䜜成するこずを提案したす。 さらに、 varcharは最倧32Kbのテキストサむズを蚱可したす。 メディア写真、ビュヌなどの堎合、これでは十分ではありたせんが、䞻にテキストデヌタで䜜業し、これで十分です。 2番目のオプションはバグの説明を読むこずであるため、修正するパッチを適甚するこずをお勧めしたす。 誰かがこれを行うず、コメントの賌読を䞭止し、蚘事に倉曎を加えたす。
  3. PHPずYII2を長い間䜿甚しおいるプログラマヌにずっお、この資料は䞍必芁に詳现に芋えるかもしれたせん。 たずえば、倚くの堎合、「構成を倉曎する」ず蚀うだけで十分です。 ただし、DelphiからPHPおよびYII2ぞの移行を開始する人にずっおは、このようなフレヌズはほずんどありたせん。 構成が存圚するファむルを芋぀ける必芁がありたす。 拡匵機胜を曎新するコマンドにも同じこずが圓おはたりたす。



All Articles