Namecheap CPanel(LiteSpeed)中Laravel/Vue存储符号链接失效问题
Laravel存储符号链接在Namecheap CPanel(LiteSpeed)环境无法访问的解决办法
问题根源
根据错误日志提示,LiteSpeed在访问符号链接指向的storage/app/public/subfolder时,会尝试读取该目录下的.htaccess文件(尽管该目录实际不存在这个文件),但因权限不足触发报错;同时LiteSpeed与Apache对符号链接、.htaccess的处理逻辑存在差异,这是导致本地/Jelastic环境正常但CPanel LiteSpeed环境异常的核心原因。
解决步骤
1. 修复存储目录权限
确保storage/app/public及其子目录的权限允许Web服务器用户访问:
# 设置目录权限为755 chmod -R 755 storage/app/public # 设置文件权限为644 chmod -R 644 storage/app/public/* # 确保目录所有者为CPanel用户名(替换user为你的实际用户名) chown -R user:user storage/app/public
2. 修改public目录的.htaccess规则
在项目public/.htaccess文件中添加LiteSpeed专属规则,禁止服务器读取符号链接目标目录的.htaccess:
<IfModule LiteSpeed> # 允许符号链接,仅当链接所有者与目标所有者匹配 Options +SymLinksIfOwnerMatch # 禁用符号链接目标目录的.htaccess检查 AllowOverride None </IfModule>
如果只想针对storage目录生效,可替换为:
<Directory "/home/user/my-project/public/storage"> <IfModule LiteSpeed> AllowOverride None </IfModule> </Directory>
注意替换路径中的user和my-project为你的实际路径。
3. 用绝对路径重建符号链接
删除现有符号链接后,使用绝对路径重新创建,避免相对路径在LiteSpeed下的解析问题:
rm public/storage ln -s /home/user/my-project/storage/app/public /home/user/my-project/public/storage
4. 检查LiteSpeed的符号链接配置
登录CPanel,找到LiteSpeed Web Server相关设置(通常在Advanced分类下),确认Follow SymLinks选项已启用,且SymLinksIfOwnerMatch配置处于生效状态。
内容的提问来源于stack exchange,提问作者iamsubingyawali
相关产品推荐
相关产品推荐

