Domanda

Ottengo questo strano errore child pid 1789 exit signal Bus error (10) che non ho mai visto prima nel mio log degli errori di Apache. Sto usando il framework FuelPHP. L'app Web funziona correttamente. Ma improvvisamente oggi ho creato un nuovo controller, che a sua volta è una copia di un altro controller. Quello da cui ho copiato funziona bene (http:// localhost / miaapp / admin / users), ma la copia (http:// localhost / miaapp / admin / apartments) mi fa quell'errore ?! Sono frustrato per questo.

Dopo 3 ore di debug ho finalmente trovato la linea in cui tutto si ferma. È nel core FuelPHP nella classe Router in questa riga if (class_exists($class)). Il $class prima di if ha il valore Controller_Admin_Apartments, che è la classe che ho aggiunto ed esiste nella cartella delle classi del controller.

fuel / core / classes / 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;
}

Un utente nel forum FeulPHP ha notato che questo potrebbe essere correlato all'hardware. Ma non è. Ho spostato l'intera cosa su un altro computer e ho ancora la stessa cosa. Semplicemente non capisco. Cosa sta succedendo qui?

È stato utile?

Soluzione

Ok sparami.Ho appena trovato l'errore da solo.Non so perché succede ma ho avuto un errore di sintassi nel mio controller Controller_Admin_Apartments.Avevo questa funzione:

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');
}

Nota la riga: if (apartment = Model_Apartment::find($id)), dove ho dimenticato di aggiungere $ davanti al nome della variabile.Sono davvero sorpreso che il framework FulePHP non mi abbia avvisato di questo e che l'unico errore che ho avuto fosse nel log degli errori di Apache: S.Strano, proprio strano ...

Altri suggerimenti

Questa è una soluzione completamente diversa, ma correlata all '"errore del bus di segnale": ho ottenuto questo quando ho accidentalmente inserito 512MB anziché semplicemente 512M nell'impostazione memory_limit del mio php.ini.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top