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

使用AMPPs时require_once触发Permission denied错误的解决方法

解决require_once权限拒绝及路径错误问题

问题回顾

你在Category.class.php中使用require_once调用模板文件时遇到了权限拒绝和路径无法解析的错误,具体报错如下:

Warning: require_once(C:\Program Files\Ampps\www\admin-panel): failed to open stream: Permission denied in C:\Program Files\Ampps\www\admin-panel\admin-dashboard\Category.class.php on line 22
Fatal error: require_once(): Failed opening required '' (include_path='.;C:\php\pear') in C:\Program Files\Ampps\www\admin-panel\admin-dashboard\Category.class.php on line 22

对应的调用代码和.htaccess配置分别是:

调用函数代码

public function index() {
    $db = new DataBase();
    $categories = $db->select("SELECT * FROM `categories` ORDER BY `id` DESC;");
    require_once(realpath(dirname(__FILE__) . "../template/admin/category/index.php"));
}

.htaccess配置

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)$ admin-panel/index.php [QSA,L]

分步解决方案

1. 优先修复路径拼接错误

这是最核心的问题!你当前的路径拼接缺少了目录分隔符:

  • dirname(__FILE__)返回的是C:\Program Files\Ampps\www\admin-panel\admin-dashboard
  • 直接拼接../template/...会变成admin-dashboard../template,这是一个无效的路径
  • realpath解析无效路径会返回false,导致require_once尝试加载admin-panel目录而非目标文件,最终触发权限拒绝错误

修改路径拼接,推荐两种方式:

// 方式1:用PHP内置常量保证跨平台兼容性(Windows/Linux都适用)
require_once(realpath(dirname(__FILE__) . DIRECTORY_SEPARATOR . "../template/admin/category/index.php"));

// 方式2:直接添加斜杠(更简洁,多数环境都支持)
require_once(realpath(dirname(__FILE__) . "/../template/admin/category/index.php"));

2. 调整目录/文件权限(路径修复后仍报错时)

如果路径修复后还是提示权限拒绝,需要确保目标文件和目录有可读权限:

  • 在Windows系统中:右键template/admin/category目录或index.php文件 → 属性 → 安全 → 给Apache运行用户(通常是IUSR或Apache用户组)添加读取和执行权限
  • 如果你用Ampps面板管理站点,可以直接在面板的站点设置里找到权限配置项,确保文件目录权限正确

3. 用绝对路径彻底避免路径混淆(可选但推荐)

为了避免后续因文件位置变动或URL重写导致的路径问题,建议在项目入口文件(比如admin-panel/index.php)中定义根目录常量,然后在所有文件中使用绝对路径:

在入口文件添加:

// 定义项目根目录(__DIR__是入口文件所在的admin-panel目录)
define('PROJECT_ROOT', realpath(__DIR__));

然后在Category.class.php中调用:

require_once(PROJECT_ROOT . "/template/admin/category/index.php");

这种方式不受当前文件位置影响,路径解析更可靠。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 11:27:33