Problemas comunes en CakePHP 2 cuando subes tu aplicación a un Hosting

Todo empieza cuando creamos una aplicación servidora para la administración de los menús, las cartas y platos de un restaurante. Necesitábamos una aplicación en un servidor para que a través de una aplicación móvil acceder y obtener los datos en tiempo real. Nosotros creamos la aplicación servidora en localhost, la desarrollamos y probamos y todo funcionaba correctamente. Para poder acceder a ella y obtener los datos desde la app móvil la subimos a un Hosting gratuito denominado “Hostinger” temporalmente mientras consiguiéramos nuestro dominio www.developando.com. Todo funcionaba correctamente. Una vez que tenemos nuestro dominio, decidimos crear un subdominio para acceder a la aplicación servidora a través de http://www.panel.developando.com.

Al migrar la aplicación al subdominio todos son problemas:

 PHP |  copy code |? 
01
<?php
02
App::uses('Controller', 'Controller');
03
class AppController extends Controller {
04
 
05
public $components = array(
06
'Session',
07
'Auth' => array(
08
'loginRedirect' => array('controller' => 'pages', 'action' => 'display', 'home'),
09
'logoutRedirect' => array('controller' => 'users', 'action' => 'login'),
10
'authorize' => array('Controller'), // Added this line
11
)
12
);
13
public function beforeFilter() {
14
parent::beforeFilter();
15
$this->Auth->allow('login');
16
$this->Auth->authError = __('Debes identificarte para acceder al panel de administración.');
17
$this->Auth->loginError = __('Usuario o contraseña inválidos, inténtelo de nuevo más tarde');
18
 
19
}
20
}?>

  • El método “login” , usado paracomprobar si un usuario existe en base de datos o no siempre devuelve que no existe aunque en la base de datos si exista y el log demuestre que verdaderamente esa fila existe:

 PHP |  copy code |? 
1
<?php
2
$this->Auth->login(); //always return false
3
?>

  • No se muestran los mensajes de sesión básicos:

 PHP |  copy code |? 
1
<?php
2
$this->Session->setFlash("El usuario se ha autenticado correctamente");
3
?>

  • No funciona el método redirect. Al redirigir desde un método de un controlador a una página a través de

 PHP |  copy code |? 
1
<?php
2
$this->redirect(array('action' => 'index');
3
?>

nos redirige a una página en blanco.

Después de investigar mucho y probar múltiples opciones que se mostraban en los foros de internet, en la documentación de cakephp, pensando que el problema era debido a la configuración de la sesión, las cookies, los ficheros htaccess, la configuración del subdominio… ¡¡¡No!!! El problema era que había espacios en blancos o líneas en blanco antes de la definición al comienzo de los ficheros del las clases del modelo y de los controladores.

Fichero incorrecto para este servidor

 PHP |  copy code |? 
01
02
 
03
 
04
 
05
 
06
<?php
07
// app/Model/User.php
08
App::uses('AuthComponent', 'Controller/Component');
09
class User extends AppModel {
10
 
11
....
12
?>

Fichero correcto (sin líneas en blanco)

 PHP |  copy code |? 
01
<code lang="php"><?php
02
// app/Model/User.php
03
 
04
App::uses('AuthComponent', 'Controller/Component');
05
class User extends AppModel {
06
 
07
 
08
....
09
 
10
?>

Share Button
Fátima de la Osa Barriga

Sobre 

Fátima de la Osa Barriga es uno de los creadores y desarrolladores que componen Developando.

Si quieres conocer más sobre visita su perfil.

    Find more about me on:
  • facebook
  • googleplus
  • linkedin
  • twitter

Deja tu comentario

Loading Disqus Comments ...
Loading Facebook Comments ...