2

child pid 1789 exit signal Bus error (10)Apache エラー ログに、これまでに見たことのないこの奇妙なエラーが表示されます。FuelPHP フレームワークを使用しています。Web アプリは正常に動作しています。しかし、今日突然、別のコントローラーのコピーである新しいコントローラーを作成しました。私がコピーしたもの (http://localhost/myapp/admin/users) は正常に動作しますが、コピー (http://localhost/myapp/admin/apartments) でエラーが発生しますか?! 私はこれに不満を感じています。

3時間のデバッグの後、最終的にすべてが停止する行を見つけました。この行の Router クラスの FuelPHP コアにありif (class_exists($class))ます。ifの$class前には valueController_Admin_Apartmentsがあり、これは私が追加したクラスであり、コントローラー クラス フォルダーに存在します。

燃料/コア/クラス/router.php:

protected static function parse_segments($segments, $namespace = '', $module = false)
{
    $temp_segments = $segments;

    foreach (array_reverse($segments, true) as $key => $segment)
    {
        $class = $namespace.'Controller_'.\Inflector::words_to_upper(implode('_', $temp_segments));
        array_pop($temp_segments);
        if (class_exists($class))      // ***** HERE ERROR HAPPENS ***** //
        {
            return array(
                'controller'    => $class,
                'action'        => isset($segments[$key + 1]) ? $segments[$key + 1] : null,
                'method_params' => array_slice($segments, $key + 2),
            );
        }
    }

    // Fall back for default module controllers
    if ($module)
    {
        $class = $namespace.'Controller_'.$module;
        if (class_exists($class))
        {
            return array(
                'controller'    => $class,
                'action'        => isset($segments[0]) ? $segments[0] : null,
                'method_params' => array_slice($segments, 1),
            );
        }
    }
    return false;
}

FeulPHP フォーラムのユーザーは、これはハードウェアに関連している可能性があると指摘しました。そうではありません。全体を別のコンピューターに移動しましたが、まだ同じものがあります。私はそれを理解していません。ここで何が起きてるの?

4

2 に答える 2

1

わかりました、私を撃ってください。エラーを自分で見つけました。原因はわかりませんが、コントローラでシンタックス エラーが発生しましたController_Admin_Apartments。私はこの機能を持っていました:

public function action_delete($id = null)
{
    if (apartment = Model_Apartment::find($id))
    {
        $apartment->delete();
        Session::set_flash('success', 'Deleted apartment #'.$id);
    }
    else
    {
        Session::set_flash('error', 'Could not delete apartment #'.$id);
    }
    Response::redirect('admin/apartments');
}

行に注意してください: 、変数名の前if (apartment = Model_Apartment::find($id))に追加するのを忘れていました。$FulePHP フレームワークがこれを警告しなかったこと、そして私が持っていた唯一のエラーが Apache エラーログにあったことに本当に驚いています:S. 奇妙な、ただ奇妙な...

于 2012-01-11T23:34:56.503 に答える
0

これはまったく別の解決策ですが、「シグナル バス エラー」に関連しています。これは、php.ini の memory_limit 設定512MBだけでなく、誤って入力したときに発生しました。512M

于 2013-07-26T19:33:30.753 に答える