2017-09-20 15 views
0

내 장인 명령을 백그라운드에서 실행하려면 shell_exec 명령을 사용하고 있습니다. 하지만 프로덕션 서버에서 shell_exec을 실행할 때.라이브 서버에서 laravel artisan 명령에 shell_exec을 사용할 수 없습니다.

경로 코드를 다음과 같이 나에게 오류가 발생

Route::get('/test/exec', function() { 
    echo shell_exec('php ../artisan migrate:status 2>&1; echo $?'); 
}); 

을 다음과 같이.

PHP Fatal error: Cannot redeclare class Illuminate\Support\Traits\Macroable in /var/www/production/bootstrap/cache/compiled.php on line 6109 255 

그러나 내 로컬에서 동일한 명령을 실행하면 결과가 나타납니다.

  • Laravel versin - 5.1.46
  • PHP 버전 - PHP 5.5.9
  • OS 버전 - 14.04

이 우분투는 두 서버에서 동일합니다. 어디가 잘못 됐어. 제발, 어떤 사람이 이걸 도와 줬어.

+0

개별 작곡가 종속성을 제거하십시오, 그들 중 하나는 오토로더를 사용하지 않고 수동으로 일을 포함하는 것으로 보인다 될 수있다 . 또는 xdebug를 사용하여 'debugging google'을 실행하고이 파일이 필요하고 치명적인 오류가 발생 될 때까지 코드를 단계별로 실행하십시오. 단, Laravel뿐 아니라 PHP 지식이 필요합니다. – Jimbo

답변

0

이 오류를 들어 다음 명령을 실행하려고 :

php artisan clear-compiled 
php artisan optimize 

compiled.php 파일을 다시 생성해야합니다. 코드 내에서 장인의 명령을 실행에 관해서는

shell_exec를 사용하는 것보다 더 나은 방법이 있습니다 - for example using Laravel build in support for programmatically executing commands

+0

새로운 compiled.php 파일을 만들었습니다. 하지만 문제는 여전히 존재합니다. – Tamizharasan