DevOps Days

主にインフラの話がメインです

Azure AppServiceにおけるWordpressプラグインWP-DB Managerの実行について

ただ今、大変げんなりしている

MySQL in App

Azure AppService上でWordpressを運用しているサイトがあり 仕様上の都合でプラグイン「WP-DB Manager」が利用でききず困っていた

まぁAppServiceにはMySQLが入っていないため、当然mysqldumpが使えないので さもありなんである

最近「MySQL in App」なる機能が使えるようになったとのことを風に噂に聞いて ためしに機能を有効化してみると

“D:/Program Files (x86)/mysql/5.7.9.0/bin/”

に待望のmysqldump.exeが!

escapeshellcmd

喜び勇んで設定してみるものの動作せず、結局プラグインソースコードを読む羽目に

どうもmysqldump.exeの実行時に、escapeshellcmd関数をつかってファイルパスをエスケープしているようだ

当該関数を通すことにより

“D:/Program Files (x86)/mysql/5.7.9.0/bin/mysqldump.exe”

“D:/Program Files ^(x86^)/mysql/5.7.9.0/bin/mysqldump.exe”

にエスケープされてしまいファイルパスが認識されずコマンドが実行できていない、ということらしい なんだよ…^って

そもそもシステムで利用するフォルダに(x86)とかいう残念なパスを設定したMicrosoftも大概だけど シェル実行用のエスケープ関数通したらシェル実行できないとか意味がわからんのだが…

※ちなみに、escapeshellcmdを使わずに実行すると無事バックアップが取れました