Pregunta

Recibo este extraño código child pid 1789 exit signal Bus error (10) de error que nunca antes había visto en mi registro de errores de Apache. Estoy usando el framework FuelPHP. La aplicación web funciona bien. Pero de repente hoy creé un nuevo controlador, que a su vez es una copia de otro controlador. ¿El que copié funciona bien (http:// localhost / myapp / admin / users), pero la copia (http:// localhost / myapp / admin / apartments) me hace ese error? Estoy frustrado por esto.

Después de 3 horas de depuración finalmente encontré la línea donde todo se detiene. Está en el núcleo FuelPHP en la clase Router en esta línea if (class_exists($class)). El $class antes del if tiene el valor Controller_Admin_Apartments, que es la clase que he agregado y existe en la carpeta de clases de mi controlador.

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 usuario del foro FeulPHP señaló que esto podría estar relacionado con el hardware. Pero no lo es. Moví todo a otra computadora y todavía tengo lo mismo. Simplemente no entiendo. ¿Qué está pasando aquí?

¿Fue útil?

Solución

Ok, dispárame.Solo encontré el error yo mismo.No sé por qué sucede, pero tuve un error de Synthax en mi controlador Controller_Admin_Apartments.Tenía esta función:

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

Tenga en cuenta la línea: if (apartment = Model_Apartment::find($id)), donde olvidé agregar $ delante del nombre de la variable.Estoy realmente sorprendido de que el framework FulePHP no me alertara sobre esto y que el único error que tuve fue en el registro de errores de Apache: S.Extraño, simplemente extraño ...

Otros consejos

Esta es una solución completamente diferente, pero relacionada con el 'error de bus de señal': obtuve esto cuando ingresé accidentalmente 512MB en lugar de solo 512M en la configuración memory_limit de mi php.ini.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top