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

Wake-on-LAN脚本功能正常但执行后浏览器跳转404错误页面的解决方案咨询

解决Wake-on-LAN按钮点击后跳404的问题

先梳理下你代码里的问题点,再给出针对性的修复方案:

1. 先修正PHP脚本的致命笔误(大概率是404的直接诱因)

你的PHP代码里调用Python脚本的路径写的是/var/www/html/scripts/python/wake.py8——这里的.py8明显是手滑打错了,应该是.py。如果实际脚本文件是wake.py,那PHP执行system()时会找不到目标脚本,导致后续的跳转逻辑header("Location:index.html")可能因为脚本执行中断而无法触发,浏览器就会停在scripts/wol.php这个页面,若服务器没有正确处理这个异常,就可能返回404错误。

修正后的PHP代码:

<?php 
// 修正脚本后缀笔误
system("python /var/www/html/scripts/python/wake.py [Variable1] [Variable2]"); 
// 改用绝对路径跳转,避免相对路径带来的问题
header("Location: /index.html"); 
exit; // 加上exit确保后续代码不会意外执行
?>

2. 用AJAX实现无跳转唤醒(彻底解决页面跳转类问题)

原来通过<a>标签跳转执行PHP脚本再返回首页的方式,很容易因为路径错误、脚本执行异常等问题导致跳转失败。换成异步AJAX调用后,点击按钮时后台悄悄执行唤醒逻辑,页面完全不会跳转,体验更流畅,也从根源上避免了404的可能。

改造HTML代码

把按钮和<a>标签分离,添加点击事件触发AJAX:

<tr>
  <td>
    <button id="wakeBtn">
      <img src="images/action_start.jpg" alt="Computer 2" style="width:50px;">
    </button>
  </td>
</tr>

<!-- 引入jQuery(如果项目已有可省略,也可以用原生JS实现) -->
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>
$(document).ready(function() {
  $("#wakeBtn").click(function() {
    // 异步调用唤醒脚本
    $.ajax({
      url: "scripts/wol.php",
      type: "GET",
      success: function() {
        // 唤醒指令发送成功后的提示
        alert("已向设备发送唤醒指令!");
      },
      error: function(xhr) {
        // 出错时的提示,也可以在控制台查看详细错误
        alert("唤醒指令发送失败,请检查脚本配置!");
        console.log(xhr.responseText);
      }
    });
  });
});
</script>

优化PHP脚本(适配AJAX调用)

如果用AJAX,PHP不需要再做页面跳转,直接返回执行状态即可:

<?php 
// 执行Python脚本并捕获返回状态
$returnCode = 0;
$result = system("python /var/www/html/scripts/python/wake.py [Variable1] [Variable2]", $returnCode);

if ($returnCode === 0) {
  echo "success";
} else {
  // 返回500错误码,让AJAX触发错误回调
  http_response_code(500);
  echo "执行失败:" . $result;
}
exit;
?>

3. 额外排查项

  • 确认scripts/wol.php的实际路径是否正确:检查HTML页面所在目录下的scripts文件夹里是否真的存在这个文件
  • 权限检查:确保Apache运行用户(比如www-data)对/var/www/html/scripts/python/wake.py有读取和执行权限,可以用chmod +x /var/www/html/scripts/python/wake.py和chown www-data:www-data /var/www/html/scripts/python/wake.py调整
  • 查看Apache错误日志:日志路径通常是/var/log/apache2/error.log,里面的报错信息能帮你快速定位隐藏问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 09:44:05