mod_userdir禁用是否会阻止cPanel服务器的localhost HTTP请求?
问题原因判断
你遇到的404错误确实是mod_userdir关闭导致的,但不要尝试开启mod_userdir,你服务器已启用的mod_ruid2和它存在架构冲突,同时启用会导致站点权限混乱,官方明确不支持该组合配置。
可行解决方案
方案1:请求时指定Host头(改代码即可,无需改服务器配置)
Apache的虚拟主机是通过请求头的Host字段匹配站点,你只需在原请求代码中加Host头指定目标站点的域名,就能通过127.0.0.1正常访问对应站点下的API:
$opts = array( 'http' => array( 'method' => "GET", 'header' => "Host: 你站点绑定的域名\r\n" . "Content-type: application/x-www-form-urlencoded\r\n" ) ); $file = file_get_contents("http://127.0.0.1/<public_html下的API路径>", false, stream_context_create($opts));
方案2:直接用域名发起请求
不用127.0.0.1,直接用目标站点的域名作为请求地址,为了避免请求走公网,可以在服务器/etc/hosts文件中添加一条记录,把域名绑定到本地IP:
127.0.0.1 你的域名 www.你的域名
方案3:本地文件调用(性能最优)
如果两个API属于同一个cPanel账号,完全不需要走HTTP请求,直接用绝对文件路径引入对应API文件即可,性能比HTTP请求高10倍以上:
require_once "/home/你的cPanel用户名/public_html/<API文件路径>";
内容的提问来源于stack exchange,提问作者Soheil
相关产品推荐
相关产品推荐

