0

アプリケーションに移行ルートがあり、現在の出力は次のとおりです。

init migrate:install...done migrate:install
init with tables migrations...

今は止まります。ただし、出力は続行する必要があります。ルートは次のとおりです。

Route::get('/migrate', function () {
    try {
        try {
            echo '<br>init migrate:install...';
            Artisan::call('migrate:install');
            echo 'done migrate:install';
        } catch (Exception $e) {
            echo 'allready installed';
        }

        echo '<br>init with tables migrations...';
        Artisan::call('migrate', array('--force' => true)); // here it stops via browser
        echo 'done with migrations';

        echo '<br>clear view cache...';
        $cachedViewsDirectory = app('path.storage').'/framework/views/';

        if ($handle = opendir($cachedViewsDirectory)) {
            while (false !== ($entry = readdir($handle))) {
                if(strstr($entry, '.')) continue;

                @unlink($cachedViewsDirectory . $entry);
            }

            closedir($handle);
        }
        echo 'all view cache cleared';

        return redirect()->route('backend::dashboard');
    } catch (Exception $e) {
        Response::make($e->getMessage(), 500);
    }
});

シェルにアクセスして移行を実行すると、次のように動作します。

-bash-4.2$ /opt/plesk/php/5.6/bin/php artisan migrate
**************************************
*     Application In Production!     *
**************************************

 Do you really wish to run this command? (yes/no) [no]:
 > yes

Migrated: 2016_08_23_194102_import_old_data
Migrated: 2016_08_25_080129_import_old_adresses
Migrated: 2016_08_25_080801_import_oldname_to_accountholder

ルートから機能しないのはなぜですか?

アップデート

Apache ログには、戻り状態 200 で「GET /migrate HTTP/1.0」が表示されるため、HTTP OK です。

Browser DEV ツールでもエラーは発生しません。

更新 2

また、laravel.log は空です。migration-route の呼び出し中に新しいエントリがありません。

4

2 に答える 2

0

エラーを投稿するか、[開発ツール] > [ネットワーク] タブを開くか、Apache エラー ログを開きます

于 2016-08-30T12:44:12.763 に答える
0

OK、実行しました。

元の移行 (ばかが投稿していたら便利だったかもしれません)

/**
 * Run the migrations.
 *
 * @return void
 */
public function up()
{
    // Load data to be imported.
    $oldOrders = json_decode(File::get('storage/olddata.json'), TRUE);

    // Update.
    foreach ($oldOrders as $rawOrder) {
        /* @var \App\Order $order */
        $order = \App\Order::find(intval($rawOrder['id']));

        // Check whether order is payed.
        if ($order->isPayed() === FALSE && floatval($rawOrder["payedAmount"]) != 0) {
            /* @var \App\Payment $payment */
            $payment = new \App\Payment();

            $payment->order_id = $order->id;
            $payment->amount = $rawOrder["payedAmount"];
            $payment->method = $rawOrder["paymentMethod"];

            $payment->save();
        }
    }
}

そして現在の移行

/**
 * Run the migrations.
 *
 * @return void
 */
public function up()
{
    // Load data to be imported.
    $oldOrders = json_decode(File::get(base_path('storage/olddata.json')), TRUE);

    // Update.
    foreach ($oldOrders as $rawOrder) {
        /* @var \App\Order $order */
        $order = \App\Order::find(intval($rawOrder['id']));

        // Check whether order is payed.
        if ($order->isPayed() === FALSE && floatval($rawOrder["payedAmount"]) != 0) {
            /* @var \App\Payment $payment */
            $payment = new \App\Payment();

            $payment->order_id = $order->id;
            $payment->amount = $rawOrder["payedAmount"];
            $payment->method = $rawOrder["paymentMethod"];

            $payment->save();
        }
    }
}

ローカル環境では、シェルから移行しました。始点は / です。しかし、ルートでは、開始点が別のもののようでFile::get、例外がスローされました。しかし(なぜか)ログに記録されませんでした。try{}catch(\Exception $e){}移行を追加したところ、エラーが表示されました。

于 2016-08-30T14:06:55.030 に答える