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

Apache/2.4.18(Ubuntu)启用外部认证报错求助:文件不存在

解决Apache外部认证执行PHP脚本的报错问题

首先看你遇到的两个核心错误:exec of '/home/ubuntu/myauth.php' failed: (2) No such file or directory 和 AuthExtern phptest [/home/ubuntu/myauth.php]: Failed (255) for user gert,我给你拆解下可能的原因和解决办法:

1. 脚本路径或权限问题

  • 先确认/home/ubuntu/myauth.php这个文件真的存在!可以直接在终端跑命令:ls -l /home/ubuntu/myauth.php,如果显示" No such file or directory",那就是路径写错了,或者文件压根没创建。
  • 如果文件存在,检查Apache进程用户(通常是www-data)有没有读和执行权限:
    • 先看文件权限:ls -l /home/ubuntu/myauth.php,确保其他用户有读权限(至少r位),比如权限是-rw-r--r--。
    • 再检查目录权限:/home/ubuntu这个目录要给www-data至少执行权限(x位),不然Apache进不去这个目录。可以用chmod o+x /home/ubuntu来设置。

2. PHP脚本的Shebang头缺失

因为你直接执行PHP脚本,系统不知道用什么解释器来运行它。必须在脚本的第一行加上Shebang:

#!/usr/bin/env php
<?php
// 你的认证逻辑代码
?>

然后还要给脚本加上执行权限:chmod +x /home/ubuntu/myauth.php。

3. AuthExtern配置的问题

确保你在Apache配置里的AuthExternal指令指向的是正确的脚本路径,比如:

AuthType Basic
AuthName "My Protected Area"
AuthExternal phptest
AuthExternal phptest /home/ubuntu/myauth.php
Require valid-user

哦对了,还要确保authnz_external模块已经启用:a2enmod authnz_external,然后重启Apache:systemctl restart apache2。

4. 错误码255的额外排查

如果前面的步骤都做了还是报255,那大概率是脚本本身执行出错了。你可以切换到www-data用户去手动执行脚本,看看具体错误:

sudo su - www-data -s /bin/bash
cd /home/ubuntu
./myauth.php

输入用户名密码(或者模拟认证时的输入),看脚本输出什么错误,这样就能定位到脚本里的问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:12:34