Question

je reçois cette erreur étrange child pid 1789 exit signal Bus error (10) je ne l'ai jamais vu auparavant dans mon journal des erreurs Apache. J'utilise le cadre FuelPHP. L'application web fonctionne bien. Mais tout à coup aujourd'hui j'ai créé nouveau contrôleur, qui est lui-même une copie d'un autre contrôleur. Celui que je copiais des œuvres bien (http: // localhost / myapp / admin / utilisateurs), mais la copie (http: // localhost / myapp / admin / appartements) me fait cette erreur ?! Je suis frustré à ce sujet.

Après 3 heures de I débogage a finalement trouvé la ligne où l'ensemble des choses s'arrête. Il est dans le noyau FuelPHP en classe routeur à cette ligne if (class_exists($class)). Le $class avant si la valeur a Controller_Admin_Apartments, qui est la classe que j'ai ajouté et existe dans mon dossier classes de contrôleur.

carburant / 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 utilisateur forum FeulPHP a noté cela pourrait être lié au matériel. Mais ce n'est pas. Je déplacé le tout à un autre ordinateur et ont toujours la même chose. Je ne comprends pas. Qu'est-ce qui se passe ici?

Était-ce utile?

La solution

Ok me tirer dessus. Je viens de trouver l'erreur moi-même. Je ne sais pas pourquoi il arrive, mais j'ai eu une erreur de synthaxe dans mon Controller_Admin_Apartments contrôleur. J'ai eu cette fonction:

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

Notez la ligne: if (apartment = Model_Apartment::find($id)), où j'oublié d'ajouter $ en face de nom variable. Je suis vraiment surpris cadre FulePHP ne m'a pas alerte à cela et que la seule erreur que j'avais été dans le journal des erreurs Apache: S. Étrange, juste étrange ...

Autres conseils

Ceci est une solution complètement différente, mais en rapport avec le « signal d'erreur de bus ». Je suis quand j'avais 512MB accidentellement entré plutôt que 512M dans le cadre memory_limit de mes php.ini

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top