以前laravel项目都是上传到云服务器上的,这次突然说要搞到虚拟空间上,中间遇到了一些麻烦,特此记录一下。

上传步骤

确定项目的运行环境,并切换好对应的PHP版本(我就是忽略了这一点儿,折腾了好一会儿)\

file

我使用的是laravel6的项目,运行环境为PHP7.2+MYQL5.6

1)项目代码

由于不支持composer 等命令,所以我们需要将本地项目的所有文件进行打包,包含vendor目录。 上传压缩包,然后在线解压,这样速度会快一些。将项目文件解压到htdocs目录。

2) 导入SQL文件

由于不支持迁移等功能,所以需要在我们本地执行好所有的迁移,并且导出SQL文件,然后再在线导入到阿里云上。

3)配置文件

虚拟空间默认不支持.ENV文件,这就需要我们修改config下的配置文件了。

主要包含database.php里帐号密码的配置

file

如果你的MYSQL 不支持utf8mb4,还需要修改配置编码以及导入数据库的编码

app.php文件里的key

file

网上有些朋友好像说不支持AES-256-CBC,需要修改AES-128-CBC

但我个人测试是支持的。

4)访问后提示proc_open 错误

解决方案:https://www.jason-z.com/post/laravel6-proc-open

5)去掉public

由于虚拟空间不支持指定root目录,所以我们需要去掉默认的PUBLIC目录。

当然下面的解决方案,并不是完美的解决方法,仅作参考。

1.修改根目录下的server.php 为 index.php 2.在根目录下增加.htacess 文件

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} !^public
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>

3、将pulibc目录下的静态资源,放置到根目录下