【问题标题】:How to call the shell script from php如何从php调用shell脚本
【发布时间】:2013-11-18 12:05:42
【问题描述】:

我正在尝试使用 php 调用 shell 脚本。

这里我有一个 ajax 代码,它获取下拉值并将值发送到另一个 php 页面(deleteslide.php)。

deleteslide.php 从此页面获取值,并使用从主页获取的值的参数调用delete-slide.sh 脚本。

但是当我运行代码时它并没有调用脚本...

如何解决这个问题

这是我所做的:

主页(index.php)

AJAX 代码:

$("#deleteslide").click(function()
    {
        var prjid=document.getElementById("project-list").value;
        var unitid=document.getElementById("unit-list").value;
        var slidid=document.getElementById("slide-list").value;
           var d ='deleteslide.php?projectId='+prjid+'&unitNo='+unitid+'&slideNo='+slidid;
            $.ajax({                   
        url:d,                                           
        success:function(output)
        {              
            alert(output);              
        }           
    });
    });

deleteslide.php 代码:

<?php
$prtId =$_GET["projectId"];
$utNo=$_GET["unitNo"];
$sdeNo=$_GET["slideNo"];
 $c='/var/www/createslides/gen-json-data/delete-slide.sh '.$prtId.' '.$utNo.' '.$sdeNo;
 //print("$c");
$output=shell_exec($c );
print("$output"); 
?>

这里deleteslide.php正在调用delete-slide.sh脚本,但是脚本没有运行......

可能是什么问题??

我该如何解决这个问题??

【问题讨论】:

  • 权限设置是否正确?如果您手动运行脚本,它会起作用吗? Apache(或您正在使用的任何东西)用户是否有权运行脚本?
  • @Spokey 是的,如果我使用参数手动运行脚本,它运行正常。

标签: javascript php jquery ajax shell


【解决方案1】:

可能是你的脚本没有执行权限:-

1) 要么授予您的脚本执行权限:- linux_shell> chmod +x /var/www/createslides/gen-json-data/delete-slide.sh

2) 使用“sh”来运行你的脚本:-

$c='sh /var/www/createslides/gen-json-data/delete-slide.sh '.$prtId.' '.$utNo.' '.$sdeNo;

注意:- 当您在 linux shell 中测试 shell 脚本时,它会以登录用户权限执行,但是当您通过 web 运行它时,它会以 apache 用户权限运行,因此 apache 应该有权执行该脚本...

【讨论】:

    【解决方案2】:

    尝试添加error_reporting(-1); 可能shell_exec 已禁用。

    【讨论】:

      猜你喜欢
      • 2019-03-10
      • 1970-01-01
      • 2023-03-23
      • 2012-01-11
      • 2018-01-29
      • 2020-11-12
      • 2011-02-09
      • 2022-11-12
      • 1970-01-01
      相关资源
      最近更新 更多