Eu lembro de ter exatamente o mesmo problema. Se bem me lembro o problema foi instanciação recursiva, ou seja, o PHP ficou sem memória, o que causou a falha de segmentação. Verifique se a instanciação de $ className não gira em círculos.
Preciso de ajuda com um erro que não encontrei antes e não consigo encontrar em lugar nenhum.
Em uma estrutura PHP mvc (apenas de um tutorial), tenho o seguinte:
// Initiate the class
$className = 'Controller_' . ucfirst($controller);
if (class_exists($className)) {
$controller = new $className($this->registry);
}
$ className está mostrando o nome correto da classe (o caso também está correto). Mas quando eu corro isso eu recebo isso no log de erro do apache (sem erro php)
[Wed Mar 31 10:34:12 2010] [notice] child pid 987 exit signal Segmentation fault (11)
O ID do processo é diferente em todas as chamadas. Estou executando o PHP 5.3.0 no os x 10.6. Este site parece funcionar em 5.2.11 em outro Mac. Não tenho certeza onde ir ao lado para depurá-lo. Eu acho que poderia ser uma configuração do apache, tanto quanto um bug php ou um problema com o código ... alguma sugestão sobre onde procurar a seguir?
O erro não aparece ao comentar esse código. Eu também tenho cerca de 15 outros sites php em execução sem problemas. Incluindo outros usando a mesma estrutura mvc de base
Eu lembro de ter exatamente o mesmo problema. Se bem me lembro o problema foi instanciação recursiva, ou seja, o PHP ficou sem memória, o que causou a falha de segmentação. Verifique se a instanciação de $ className não gira em círculos.
Tente isto:
// Initiate the class
$className = 'Controller_' . ucfirst($controller);
if (class_exists($className)) {
// construct the code string and evaluate it.
$code='$controller = new ' . $className . '($this->registry);';
eval($code);
}
Eu acho que você problema é do seu próprio mac. Se você tentou o site de outro computador e não obteve o erro, então isso significa que você precisará reinstalar o pacote php. Algo deu errado em algum momento com o seu php construído (talvez uma atualização, ou um link destruído por causa da nova instalação ...)
Espero que isso ajude você.
Tente usar chaves em torno de sua variável de nome de classe. Veja abaixo na linha de atribuição $ controller.
$className = 'Controller_' . ucfirst($controller);
if (class_exists($className)) {
$controller = new ${$className}($this->registry);
}
Tags php apache-2.2 mac-osx