为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
九州编程 2021-06-16 14:02:47
如果我在页面执行期间调用它,这个命令会很好用        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 重定向,但这产生了零差异。不知道它有什么不开心...请帮忙!
查看完整描述

2 回答

?
莫回无

TA贡献1865条经验 获得超7个赞

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)

    }

});


查看完整回答
反对 回复 2021-06-19
?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

好吧,伙计们,这有一个愚蠢错误的所有迹象,就是这样。我把它留在这里留给后人,因为这是一个容易犯的错误,我看到其他人问了类似的问题,但没有很好的答案。

解决方案是我的 AJAX 文件在 SUBDIRECTORY 中,这意味着当他们执行命令时,试图导出到根子目录的输出试图在另一个子目录中找到该子目录。嘘!


查看完整回答
反对 回复 2021-06-19
  • 2 回答
  • 0 关注
  • 176 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信