0

Apache/2.2.16 (Win32) で PHP 5.2.14 を実行しており、コマンド プロンプトでテストするとうまく動作するシェル コマンドを実行するスクリプトがありますが、ブラウザー モード (html) では動作しません。

スクリプト:

mybatfile.bat

REM ...
REM process some folder details
REM code which does not work in browser mode but works in cmd mode
C:/somfolder/bin/mysqldump -u abc -pabcdef --result-file="C:/Apache22/somfolder/DBbackup/DBbackup.%DATE:~10,4%%DATE:~4,2%%DATE:~7,2%.sql" --dump-date  --log-error="C:/Apache22/somfolder/DBbackup/DBbackup.%DATE:~10,4%%DATE:~4,2%%DATE:~7,2%.log" dbname > dboutputresult.txt

REM process result of savedfile

calltobatfile.php

//process some folder information
$file = file_get_contents($folderroot."/exec/mybatfile.bat");
//var_dump($file);
    $strarr = explode("\n", $file);
    foreach($strarr as $line){
      if(strlen($line)>1){
        var_dump("line: ".$line."\n"); 
        $output = shell_exec($line);
        print_r($output);
     }
   }

//process result of savedfile additional information

ヘルプや提案をいただければ幸いです。ラフフル

4

3 に答える 3

3

サーバーとして実行する権限を確認してください。これを所有者として実行できますが、他のユーザーとして実行することはできません-例ではapache.

于 2012-10-22T16:25:26.600 に答える
2

これが私のコードで、正常に動作しています。

$result = mysqli_query($mysqli_link,'SHOW VARIABLES LIKE \'%basedir%\';');
    $row = mysqli_fetch_array($result);
    $pathtodump = "".$row['Value']."/bin/mysqldump";    
    $command= "$pathtodump -h " . $db_host . " -u " . $db_user . " -p".$db_pass. " " . $db_dbname . "> filename.sql";
    exec($command);

mysqldump.exe ファイル名にフル パスを指定してください。

于 2015-12-30T18:13:22.900 に答える
1

たぶん許可関連の問題ですか?コマンドラインでは、C:/Apache22/somfolder/DBbackup/ または dboutputresult.txt で実行または書き込みに必要な権限を持っていない Web ユーザーではなく、他のユーザーを使用している可能性があります。

于 2012-10-22T16:22:01.717 に答える