部署CodeIgniter项目至admin目录遇语法错误:Parse error: unexpected T_CONST
解决CodeIgniter部署到WordPress子目录的语法错误问题
这个问题我之前帮不少开发者排查过,你遇到的Parse error: syntax error, unexpected T_CONST错误,核心原因几乎可以确定是服务器PHP版本过低,和本地环境的PHP版本不兼容导致的。
为什么会出现这个错误?
CodeIgniter的核心文件(比如你提到的CodeIgniter.php第58行)里用了const关键字来定义类常量,但PHP 5.3之前的版本并不支持在类内部使用const声明常量。如果你的本地环境用的是PHP 5.3+(现在本地开发环境基本都是这个版本以上),但服务器还在跑PHP 5.2或更低版本,就会触发这个语法解析错误。
一步步解决问题
1. 先确认服务器的PHP版本
先搞清楚服务器到底用的是哪个PHP版本:
- 在
public_html/admin目录下新建一个phpinfo.php文件,内容写:
<?php phpinfo(); ?>
- 访问这个文件(比如输入
http://saanapp.com/admin/phpinfo.php),找到页面里的“PHP Version”项,看版本号是不是低于5.3。
2. 升级服务器PHP版本
这是最直接的解决方案:
- 如果你的主机用的是cPanel这类控制面板,找“PHP版本”或者“MultiPHP Manager”,直接把PHP版本切换到5.6以上(推荐7.4版本,兼顾兼容性和安全性)。
- 要是没有控制面板权限,直接联系主机服务商,让他们帮你升级PHP版本——现在还在用低于5.3版本的PHP,不仅不兼容框架,还存在严重的安全漏洞,服务商一般都会配合升级。
3. 顺便排查子目录的.htaccess冲突
虽然当前错误是PHP版本的问题,但部署到WordPress的子目录,还要注意两个系统的Rewrite规则冲突:
- 把
admin目录下的.htaccess补全成这样:
RewriteEngine On RewriteBase /admin/ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L]
- 上层WordPress的.htaccess要添加一行规则,避免干扰admin目录:
在WordPress的.htaccess开头加上:
RewriteCond %{REQUEST_URI} !^/admin/
4. 验证配置文件
你的$config['base_url'] = 'http://saanapp.com/admin/';和$config['index_page'] = '';配置是对的,PHP版本升级后,这个配置不会有问题,放心用。
最后测试
升级PHP版本后,记得删除刚才创建的phpinfo.php(避免泄露服务器信息),然后访问http://saanapp.com/admin/,应该就能正常加载你的CodeIgniter项目了。
内容的提问来源于stack exchange,提问作者F.Joodaki
相关产品推荐
相关产品推荐

