从一个Laravel安装到另一个运行php artisan

问题描述 投票:2回答:3

我们在deploy.mysite.com下设置了一个Laravel部署网站,该网站负责处理众多其他网站的部署。

我正在尝试部署的另一个网站也是Laravel网站,位于site2.myothersite.com下。

两者都在同一台服务器上。部署在site2上调用脚本,此部署脚本在cd'ing到项目目录后运行各种命令。我们使用以下内容来更新数据库结构。

php artisan migrate --force

通常,当在项目根目录中直接通过SSH运行时,它运行得很好。

但是,当通过部署脚本(使用php exec()运行这些命令)运行时,该过程确实有效 - 但是,它不会更新我们已经进入的项目,而是更新部署站点的数据库结构!

似乎cd命令忽略了我将php artisan migrate进入另一个项目的事实,它从当前目录获取数据库值。

我怎样才能改变这种行为?

php laravel artisan artisan-migrate
3个回答
2
投票

而不是cd到目录,您可以将命令更改为类似于此的命令:

cd

这将为提供的目录运行artisan命令。


1
投票

在玩了多个不同的解决方案之后,我终于意识到问题是来自项目的php /var/www/sitea/artisan migrate --force文件我正在设置环境变量,然后没有被任何东西覆盖,因此基本上运行代码是错误的现场。

我做了什么来解决这个问题

在我的部署脚本中,我手动加载了.env文件并用.env而不是overload覆盖环境变量;

load

这实际上是我必须要做的就是让原始脚本正常工作。

注意:由于这是一个所有端的laravel安装,已安装$dotenv = Dotenv::create(__DIR__); $dotenv->overload(); 包。这可以通过单独安装来用于任何项目。


0
投票

推荐问答