人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

windowsサーバーで、mySQLとPHPを使っています。
コマンドプロンプトからmysqldumpのコマンドをたたいたり、バッチとして動かしたりすると、普通にdumpしてくれるのですが、webベースで見たphpのプログラムの中で、system関数を使用して同じdump命令を出すと、コマンドとして認識をしてくれません。
これと別のマシンでは上記ができていて、
http://localhost/〜〜.php
でブラウザに表示させたPHPファイルからmysqldumpを呼び出してdumpがとれていますので、設定の問題だと思っているのですが、どこか気をつけるべき設定などありますでしょうか。

●質問者: golbeza
●カテゴリ:コンピュータ
✍キーワード:dump MySQL PHP Web Windows
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● thrillseeker
●100ポイント

http://www.hatena.ne.jp/1122501314##

人力検索はてな - windowsサーバーで、mySQLとPHPを使っています。 コマンドプロンプトからmysqldumpのコマンドをたたいたり、バッチとして動かしたりすると、普通にdumpしてくれるのですが..

ぱっと思い付くのは、

・セキュリティ上の観点から、system関数の使用が制限されている。

・mysqladmin へのパスが通っていない。

あたりでしょうか。

まず、問題のマシンで mysqldump 以外のコマンド( date /t など)を php から

system関数で実行出来るかどうか確認してみては?

http://www.dream-seed.com/linux/phpmyadmin.html

蛇足ですが、php から MySQL を管理するなら phpmyadmin が便利です。

◎質問者からの返答

ご回答ありがとうございます。

セキュリティのことですが、phpinfoで確認したところ、safe_modeはちゃんとOFFになっていたのです。他にどこか、systemを制限するような設定がありましたでしょうか。

また、mysqldump固有の問題でないこともわかりました。元々、フルパスで指定しても失敗していたのでパスの問題ではなさそうだなと思っていたのですが、他のコマンド(dirとか)でも失敗してしまっていました。

system関数が制限されているのが問題のようです。(でもsafe_modeではないどこかで・・・)

あと、phpmyadminは使用しています。便利ですよね。

上記のmysqldumpは、dbのテーブルに一括インストールを行う前後にバックアップを自動的にとって、エラーの場合リカバリーするという一連の処理で使っていますので、phpmyadminでは代用できないのです。。。(あ、もしかして、スクリプトの中を覗いてロジックを参考にしろという意味でしたでしょうか?)


2 ● thrillseeker
●100ポイント

http://jp.php.net/manual/ja/ref.exec.php#49383

PHP: プログラム実行関数 - Manual

なるほど。

上記 URL はsystem() では無く exec() のケースですが、

IIS を実行しているユーザーに cmd.exe の読み取り/実行権を与えることで

解決した例が報告されています。

ご参考になれば。

◎質問者からの返答

ご回答ありがとうございます!

明日早速試してみます。

------------------------

試してみたところ、cmd.exeに権限を与えることで解決しました!

ありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ