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

通过HTML页面配合PHP执行shell脚本无输出无文件生成问题求助

PHP执行Shell脚本问题解决方案
  • 首先明确404报错的根源:你之前将前端form的action属性改为本地文件系统绝对路径是错误的,action对应的是Web访问路径而非服务器本地文件路径,保持原有./test.php即可,不需要修改前端路径。
  • 修正test.php代码,使用PHP魔法常量__DIR__获取脚本所在目录的文件系统绝对路径,同时捕获执行错误信息方便排查,修改后代码如下:
<?php
// __DIR__ 自动获取当前test.php所在的文件系统绝对路径,拼接出shell脚本的准确位置
$shell_path = __DIR__ . '/bash_script.sh';
// 第二个参数接收执行输出,第三个参数接收执行状态码,非0表示执行失败
exec($shell_path, $exec_output, $exec_code);
// 调试阶段可取消下方注释查看执行详情,正式上线后注释即可
// var_dump($exec_output, $exec_code);
header('Location: http://local.server.edu/ABC/abc_test/');
?>
  • 调整bash脚本的路径和权限:
    1. 给bash脚本补充绝对路径,避免相对路径写入位置出错,修改后的bash_script.sh代码:
    #!/bin/bash
    touch /local/sequence/temp/abc_test/test_file.txt
    
    1. 给脚本和目录设置正确的权限,Web运行用户(通常为www-data、apache、nobody)需要脚本执行权限和目录写入权限,执行以下命令:
    cd /local/sequence/temp/abc_test
    # 给shell脚本加执行权限
    chmod +x bash_script.sh
    # 给目录开放Web用户写入权限,测试阶段可临时用chmod 777 . 验证,正式环境请配置合理的所属用户权限
    chown www-data:www-data ./
    
  • 确认Web服务器符号链接配置:你使用了符号链接映射目录,需要确保Web服务器开启了跟随符号链接的配置:
    • 若使用Apache,需要在对应站点配置的<Directory>段添加Options +FollowSymLinks,配置修改后重启Apache生效
    • 若使用Nginx,默认支持符号链接,无特殊配置即可正常访问

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 22:54:03