2017-09-20 2 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バージョン - Ubuntuの 14.04

これらは、両方のサーバーで同じです。どこがうまくいかなかったか。どうか、これで私を助けてくれる人もいます。

+0

個々の作曲の依存関係を削除してください、それらの一つはオートローダを使用していないため、手動で物事を含めている可能性もあり。あるいは、xdebugを使って 'debugging'を実行し、このファイルが必要となるまでコードをステップ実行し、致命的なエラーをスローします。これには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

関連する問題