Reputation: 33
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 [email protected]: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.
Upvotes: 1
Views: 423
Reputation: 104
Seems like you have trouble selecting the right working directory.
A couple if ideas come to mind:
Edit the bash script to point directly to the artisan file you are targeting:
php /home/user/project.../artisan key:generate
Try changing the working directory before executing the script like this:
$process = new Process('cd new/working/directory && sh ./createproject.sh '.$this->url);
Use chdir
Upvotes: 1