SSH连接服务器执行Laravel php artisan migrate报错解决方法
问题根因
报错里的Unexpected character in input: '\' (ASCII=92)是典型的PHP版本过低特征:PHP 5.3之前的版本不支持命名空间语法(反斜杠\是PHP命名空间的分隔符),无法解析Laravel框架的代码。
同时返回结果带Content-type: text/html和HTML标签格式的报错,说明当前php命令调用的不是PHP CLI(命令行)版本,而是低版本的PHP CGI程序,这是共享主机非常常见的默认配置错误。
注意:不要尝试修改artisan文件的代码消除报错,问题根源是PHP环境版本不对,改代码无法解决问题。
排查步骤
- 执行
php -v查看当前默认映射的PHP版本,确认版本号是否满足你所用Laravel版本的最低要求:- Laravel 10:要求PHP 8.1+
- Laravel 9:要求PHP 8.0+
- Laravel 8:要求PHP 7.3+
- Laravel 7:要求PHP 7.2.5+
如果返回版本低于对应要求,即可确认是PHP版本映射问题。
- 查找服务器上已安装的高版本PHP CLI可执行文件:共享主机通常会预装多版本PHP,常见路径包括
/usr/bin/php7.4、/usr/bin/php8.1、/opt/php/8.2/bin/php等,可通过主机面板的PHP版本管理页确认可用版本和对应路径。 - 验证找到的可执行文件是否为CLI版本:执行
/目标/PHP/路径 -v,返回结果中标注为(cli)即为正确版本,标注为(cgi)则不可用。
解决方案
- 临时执行方案:使用正确的PHP CLI路径调用artisan命令,例如PHP 8.2路径为
/usr/bin/php8.2时,迁移命令写为:
后续所有artisan相关命令都需要加此前缀执行。/usr/bin/php8.2 artisan migrate - 永久配置方案:给当前用户配置命令别名,替换默认的低版本php映射。编辑当前用户目录下的shell配置文件(bash对应
~/.bashrc,zsh对应~/.zshrc),在文件末尾添加:
保存后执行alias php="/usr/bin/php8.2"source ~/.bashrc(对应zsh就执行source ~/.zshrc)让配置生效,之后执行php -v确认版本正确,即可直接使用php artisan系列命令。 - 如果服务器上找不到满足版本要求的PHP CLI程序,直接联系主机商升级PHP环境,老旧共享主机如果不支持对应PHP版本,无法正常运行Laravel项目,建议更换主机环境。
内容的提问来源于stack exchange,提问作者NewInSpace
相关产品推荐
相关产品推荐

