dsdapobp26141 2018-08-16 15:08
浏览 80
已采纳

Laravel Artisan从错误的项目中加载

Sorry if this has been asked before but I can't seem to find the answer. I have a Laravel 5.5 application that lets users create their own project. What this does is it executes a shell script that performs a git clone to a new directory

  • cd to the new git directory
  • update the .env db details to new directory (db_dirname)
  • run composer install
  • php artisan key:generate
  • php artisan migrate --seed

The problem I'm having is that when I run this using...

sh project1/public/createproject.sh subdir 

It runs as expected however when running this from PHP the php artisan commands are running against the current project rather than the project that is being dynamically created.

 // Create the Git pull migration script
 $process = new Process('sh ./createproject.sh '.$this->url);
 $process->setTimeout(300);
 $process->run();

 // Executes after the command finishes
 if (!$process->isSuccessful()) {
     throw new ProcessFailedException($process3);
 }

 \Log::Debug($process->getOutput());

The shell script is below for reference.

SUBDOMAIN="$1.domain.com"
git clone git@bitbucket.org:user/project.git
cd /home/cloudspr/$SUBDOMAIN
export COMPOSER_HOME="/opt/cpanel/composer/bin/composer"
composer install -d /home/user/$SUBDOMAIN
pwd
php artisan key:generate
php artisan migrate --seed --database=mysql
grep APP_KEY .env

Any help is much appreciated.

  • 写回答

1条回答 默认 最新

  • dongxianghui3709 2018-08-16 16:07
    关注

    Seems like you have trouble selecting the right working directory.

    A couple if ideas come to mind:

    1. Edit the bash script to point directly to the artisan file you are targeting:

      php /home/user/project.../artisan key:generate

    2. Try changing the working directory before executing the script like this:

      $process = new Process('cd new/working/directory && sh ./createproject.sh '.$this->url);

    3. Use chdir

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?