You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ARM环境下lighttpd 1.4.55中CGI脚本未执行,返回内容问题求助

问题解决方案

核心问题定位

lighttpd直接返回CGI脚本内容而非执行结果,通常是因为静态文件处理优先级高于CGI模块,或脚本本身不具备可执行条件。

具体修复步骤

1. 调整lighttpd静态文件排除配置

在lighttpd.conf中,修改static-file.exclude-extensions,添加.cgi后缀,避免将CGI脚本当作静态文件返回:

static-file.exclude-extensions = ( ".php", ".pl", ".fcgi", ".cgi" )

2. 验证CGI脚本的可执行性

  • Shell脚本(示例脚本):
    • 添加执行权限:chmod +x /mnt/userfs/lighttpd/www/scripts_files/test.cgi
    • 确认shebang#!/bin/sh指向ARM环境中存在的shell路径,可通过which sh验证路径正确性。
  • C编译的json.cgi:
    • 必须使用ARM架构的编译器编译(交叉编译或本地ARM编译器),不能用x86平台的编译产物。编译命令示例:
      arm-linux-gnueabihf-gcc json.c -o json.cgi
      
    • 添加执行权限:chmod +x json.cgi

3. 检查lighttpd CGI配置有效性

  • 确认server.modules中已包含"mod_cgi"(你的配置已满足此条件)。
  • cgi.assign配置(".cgi" => "")正确,表示直接执行.cgi后缀的可执行文件,无需额外解释器。
  • 用lighttpd -t -f /mnt/userfs/lighttpd/lighttpd.conf验证配置语法,无报错后重启lighttpd。

4. 修复文件权限与路径问题

  • 确保scripts_files目录及json.cgi文件对lighttpd运行用户midac具备读+执行权限:
    chown midac:midac /mnt/userfs/lighttpd/www/scripts_files/ -R
    chmod 755 /mnt/userfs/lighttpd/www/scripts_files/ -R
    
  • 确认conf.json的写入路径/mnt/userfs/lighttpd/www/scripts_files/对midac用户具备写权限,否则CGI脚本无法生成文件。

5. 修正C代码中的潜在问题

  • 处理CONTENT_LENGTH为空的边界情况,避免strtol崩溃:
    char* post_len_v = getenv("CONTENT_LENGTH");
    long post_len = 0;
    if (post_len_v != NULL) {
        post_len = strtol(post_len_v, NULL, 10);
    }
    
  • 输出符合标准JSON格式,将单引号改为双引号:
    printf("Content-type: text/html\n\n");
    printf("{\"ret\": \"OK\"}");
    

6. 完善AJAX请求逻辑

补全onreadystatechange函数体,确保能正确接收和处理响应:

function submit_form() {
    var div1 = document.getElementById("extern");
    var data = recursive_f(div1, 0, 0);
    var output = JSON.stringify(data);
    var xhr_lv = new XMLHttpRequest();
    xhr_lv.onreadystatechange = function() {
        if (xhr_lv.readyState === 4 && xhr_lv.status === 200) {
            console.log("响应结果:", xhr_lv.responseText);
            // 可在此处添加下载逻辑或提示信息
        }
    };
    xhr_lv.open("POST", "/scripts_files/json.cgi", true);
    xhr_lv.setRequestHeader('Content-Type', 'application/json; charset=UTF-8');
    xhr_lv.send(output);
}

内容的提问来源于stack exchange,提问作者marco

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 14:02:52