Apache下将PHP API挂载到/api路径需三步:Alias映射路径、Directory显式授权Require all granted、AddHandler绑定PHP处理器,且open_basedir须包含目标目录。

直接把 PHP API 接口挂到 /api 路径下,用虚拟目录(Alias)是最干净的方式——不改主站结构,不挪项目位置,还能独立管理权限和 PHP 配置。
Apache 下挂载 /api 到外部目录(如 /opt/myapi)
核心是三步配齐:映射路径、放开权限、支持 PHP 执行。
- 在
httpd.conf或站点配置中加:
Alias /api /opt/myapi<br><directory><br> Options +ExecCGI<br> AddHandler application/x-httpd-php .php<br> Require all granted<br></directory>
- 确保
mod_alias和mod_php已启用(检查LoadModule alias_module和php_module是否未被注释) - PHP 8.1+ 若启用了
open_basedir,必须把/opt/myapi加进去,否则 include 或 require 会静默失败
Nginx 下挂载 /api(推荐用 root + fastcgi_param 组合)
别只靠 alias,它容易导致 SCRIPT_FILENAME 拼错,出现 “Primary script unknown”。
- 正确写法(假设 API 文件在
/opt/myapi):
location /api/ {<br> alias /opt/myapi/;<br> index index.php;<br> location ~ \.php$ {<br> fastcgi_index index.php;<br> fastcgi_param SCRIPT_FILENAME $request_filename;<br> include fastcgi_params;<br> }<br>}
- 注意:
alias末尾必须带/,且location也带尾斜杠,保持一致 -
$request_filename是关键,它能自动解析出真实物理路径,比拼$document_root$fastcgi_script_name更可靠 - Windows 环境下还要确认
cgi.fix_pathinfo = 1,否则 PATH_INFO 会被截断
API 目录内脚本要适配虚拟路径
接口文件不能假设自己运行在网站根目录,尤其是用相对路径加载类或配置时。
- 入口脚本开头建议统一设置基础路径:
define('API_ROOT', dirname(__FILE__));<br>require API_ROOT . '/vendor/autoload.php';
- 返回 JSON 时务必加头:
header('Content-Type: application/json; charset=utf-8'); - 如果框架依赖
PATH_INFO(如 ThinkPHP),Nginx 的重写规则需保留路径前缀,例如:rewrite ^/api/(.*)$ /api/index.php?/$1 last;,再在 PHP 中用$_SERVER['PATH_INFO']解析
权限与安全收尾要点
挂上去了不等于跑得稳,还得检查几处硬性限制。
- 目录归属和权限:Apache/Nginx 进程用户(如
www-data或apache)必须对/opt/myapi有读取权,执行 PHP 不需要写权限,但若接口涉及日志或缓存,需额外开放对应子目录 - 上传功能要单独处理:
upload_tmp_dir和最终保存目录都得在open_basedir白名单里,且目标目录需chmod 755、属组匹配 Web 用户 - 禁止直接访问敏感文件:可在
块里加类似规则Require all denied
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











