如何从 php 调用 shell 脚本

How to call the shell script from php

本文关键字:shell 脚本 调用 php      更新时间:2023-09-26

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

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

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

但是当我运行代码时,它不会调用脚本......

如何解决这个问题

这是我所做的:

主页(索引.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);              
        }           
    });
    });

删除幻灯片.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 脚本,但脚本未运行。

可能是什么问题??

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

可能是

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

1)要么授予执行权限给你的 sctipt:-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 应该有权执行该脚本...

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