2016-11-27 10 views
0

更新:検索の束の後、Azureが特定のシェルコマンドを実行する能力を制限することがあります。私は現在、Standard 1 Web Appプランに入っています.BPユーティリティをPHPで使用できるようにするにはどうすればよいですか?Azure PHP WebアプリケーションからBCPを実行

私はAzure WebアプリケーションでPHPスクリプトを実行しており、BCPを使用してデータをアップロードしようとしています。私はAzureコンソールを使ってコマンドを正常に実行することができましたが、PHPで実行するのに問題があります。

PHPコード:

$upload_dir = '../uploads'; 
$test = shell_exec("bcp [database].[dbo].[Group] IN $upload_dir/working/Group.csv -S <server>; -T -f $upload_dir/format/Group.fmt -F2"); 
die($test); 

私はこれを実行すると、私はスクリプトからの応答を受信しないとDBを照会し、アップロードが失敗したことを示しています。

$test = shell_exec("echo 'Hello World'"); 
die($test); 

私は期待される出力「Hello World」を受け取ります。

ファイル構造の場合、PHPスクリプトはwwwroot/scriptsフォルダにあり、CSVファイルとFMTファイルはそれぞれwwwroot/uploads/working/Group.csvとwwwroot/uploads/format/Group.fmtにあります。

PHPでシェルコマンドを実行しようとしたときに、何か不足していることはありますか?私はこれでかなり新しいので、私はすべての助けに感謝します!

ありがとうございます!

+0

更新情報がありますか? –

答えて

0

説明によると、bcp.exebcp.dllをAzure Web Appsディレクトリにコピーし、shell envを使用してbcpコマンドを実行しようとしたようです。 Azureのコンソールのデフォルトのディレクトリパスは、AzureのWebアプリケーションのルートディレクトリですので、私は、アプリケーションの構造がどのように見えるだろうと仮定したよう:あなたのコードスニペットをよる

wwwroot/ 
     bcp.exe 
     bcp.dll 
     scripts/ 
     uploads/ 
     ... 

scriptsフォルダ内のPHPスクリプトは、bcpコマンドを見つけることができませんあなたは空白のページを手に入れました。

bcp.exebcp.dllファイルをスクリプトフォルダに移動したり、シェルコマンドを変更したりできます。 ../bcp db.dbo.table in ...

ご質問の誤解がありましたら、お気軽にお知らせください。

+0

回答ありがとうございます - Azure WebアプリケーションサーバーはWindows Server上で動作するため、BCPはデフォルトでインストールされます。問題は、サーバがbcpやlsなどのコマンドでshell_execを実行できないということでした。私はBCPを実行する能力を持つ別の仮想マシンを作成しました。 – user2884505

関連する問題