【问题标题】:PHP shell exec not working in html browser but working on cmd promptPHP shell exec不在html浏览器中工作,但在cmd提示符下工作
【发布时间】:2012-10-22 16:17:49
【问题描述】:

我在 Apache/2.2.16 (Win32) 上运行 PHP 5.2.14,并且我有一个运行 shell 命令的脚本,在命令提示符下测试时效果很好,但在浏览器模式 (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

任何帮助和建议表示赞赏。 呸呸呸

【问题讨论】:

  • 网络服务器用户 ID 是否有权执行该批处理文件中正在执行的任何操作?从 cli 而不是从网络服务器工作通常是权限/路径问题。
  • 感谢您的建议。这绝对是一个权限问题,因为它现在可以在使用文件夹权限进行调整后工作。

标签: php exec windows-shell shell-exec


【解决方案1】:

检查将其作为服务器运行的权限。您可以以所有者身份运行它,但不可能以其他用户身份运行它 - 在您的示例中为 apache。

【讨论】:

    【解决方案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 提供完整路径的文件名

    【讨论】:

      【解决方案3】:

      也许是权限相关问题?在您的命令行中,您可能正在使用其他用户而不是 Web 用户,它可能没有在 C:/Apache22/somfolder/DBbackup/ 或 dboutputresult.txt 中执行或写入所需的权限

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-11-06
        • 1970-01-01
        • 2014-03-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-30
        相关资源
        最近更新 更多