PHP exec() 命令在代码中完美运行,但在被 AJAX 调用时不行

如果我在页面执行期间调用它,这个命令会很好用


        exec('run.exe -something', $response, $status);

但是我在页面上有一个按钮通过 AJAX 执行相同的命令:


                // Attempt a call to change the password

            $.ajax({

                url: 'actions/runcommand.php',

                type: 'POST',

                data: { 

                    cid: cid, 

                },

                dataType: 'json',

                success: function(msg)

                {

                    if (ajaxErr(msg) return;


                    // Show success message

                    showMsg('success!');


                },

                error: function(jqXHR, textStatus, errorThrown){ajaxFail(jqXHR, textStatus, errorThrown)}

            });                     

我已经验证,无论是在我的代码中还是通过 AJAX 执行,这两个字符串都在执行相同的字符串,但是 AJAX 启动的一个正在返回错误代码而不是运行。status 的值为 1,这是一个通用错误,所以我没有什么可继续的。


我环顾四周,发现了一篇类似的帖子,但他们通过从 ajax 命令中删除 https 解决了这个问题。如果我这样做,浏览器会用可怕的消息阻止它。


这是在尝试使用 HTTPS 但失败的本地机器上运行的,因为它是自签名证书或其他东西。我关闭了该站点的 https 重定向,但这产生了零差异。不知道它有什么不开心...请帮忙!



九州编程
浏览 177回答 2
2回答

莫回无

if (ajaxErr(msg) return;错误处理不应在成功回调函数中完成。您可以删除它或修改此功能正在执行的操作。如果您从不同的目录请求 URL,请确保您的 URL 参数对根目录使用前导斜杠:url: '/actions/runcommand.php',试试这个,看看是否仍然存在一般错误:$.ajax({    url: '/actions/runcommand.php',    type: 'POST',    data: {         cid: cid,     },    dataType: 'json',        success: function(data, status) {        console.log(data);        console.log(status);        showMsg('success!');    },    error: function(jqXHR, textStatus, errorThrown) {        ajaxFail(jqXHR, textStatus, errorThrown)    }});

牧羊人nacy

好吧,伙计们,这有一个愚蠢错误的所有迹象,就是这样。我把它留在这里留给后人,因为这是一个容易犯的错误,我看到其他人问了类似的问题,但没有很好的答案。解决方案是我的 AJAX 文件在 SUBDIRECTORY 中,这意味着当他们执行命令时,试图导出到根子目录的输出试图在另一个子目录中找到该子目录。嘘!
打开App,查看更多内容
随时随地看视频慕课网APP