• Compra una licencia de Windows 10/11 (10€) u Office (18€) al mejor precio u Office al mejor precio. Entra en este post con las ofertas
  • Conoce los Días Naranjas de PcComponentes: descuentos de hasta un 40% en tecnología. Entra en este post con las ofertas
  • ¡Bienvenid@! Recuerda que para comentar en el foro de El Chapuzas Informático necesitas registrar tu cuenta, tardarás menos de 2 minutos y te dará valiosa información además de ayudarte en lo que necesites o pasar un rato agradable con nosotros.

AYUDA Slim framework funciona en localhost y no en un host remoto.

slimuser

Nuevo
Registrado
14 Oct 2016
Mensajes
11
Puntos
0
Con este codigo slim funciona bien en localhost mostrando el template con las vistas pero cuando lo llevo a un host remoto no muestra nada. Lo he estado testtendo y no funcionan bien el redireccionamiento ni tampoco la parte que tiene que ver con el template.

Si alguien me puede ayudar a detectar que pasa pq no funciona en el host remoto se lo voy a agradecer.
Gracias



<?php

define('DOC_ROOT', $_SERVER['DOCUMENT_ROOT'] . "/");

define('NAMEPROJECT', '');

define('SITE_ROOT', DOC_ROOT . NAMEPROJECT .'');

define('SITE_PATH', 'http://'.$_SERVER['HTTP_HOST']. '/');

define('VIEWS', DOC_ROOT . NAMEPROJECT .'views/');

define('CSS', SITE_PATH . 'public/css/');

define('JS', SITE_PATH . 'public/js/');

define('IMAGES', SITE_PATH . 'public/images/');

//require_once SITE_ROOT . '../config/config.php';



quse Slim\Views\PhpRenderer;
require '/var/www/html/vendor/autoload.php';




$app = new Slim\App(['settings' => ['displayErrorDetails' => true]]);



$container = $app->getContainer();


$container['view'] = function ($container) {
return new PhpRenderer('templates');
};



$app->get('/', function ($request, $response, $args) use($app) {

return $response->withRedirect('/home');

});

$app->get('/{pages}', function ($request, $response, $args) use($app) {

$pages = $args['pages'];
if (!is_file(VIEWS . $pages . '.php')) {

return $response->withRedirect('/pageNoFound');
//throw new Exception("NOOO exist");
} else {


ob_start();

include VIEWS . $pages . '.php';

$salida = ob_get_contents();

ob_end_clean();
$pages = $salida;
}
return $this->view->render($response, '/index.php', array('pages' => $pages));
});


$app->run();
 
Que muestra el log de php y Apache ?
 
Adicionalmente, agregaste el .htacces
 
La verdad no se como hacer eso que me preguntas.

Que muestra el log de php y Apache ?

Este es el htaccess




RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [QSA,L]
 
Como puedo ver los logs de php y apache ??
 
El problema del redireccionamiento lo solucione asi:

//return $response->withRedirect('/home'); .............. POR .................header('Location: /home');

solo me queda la parte del template y las vistas.
 
Cuidado con las rutas a los ficheros... ¿No será por ello?
 
La ruta a las vistas esta bien pq lo he testeado y funciona
....
....
....

include VIEWS . $pages . '.php';

$salida = ob_get_contents();

ob_end_clean();
$pages = $salida;

======>> echo $pages; <<====== cuando hago esto en la web se ve la vista ...

....
....

Entonces puede ser la ruta a la carpeta template, pero ya he probado incluso con la ruta absoluta /var/www/html/templates y nada...
 
Tienes acceso a los logs de apache? Pasanos las ultimas 5 líneas de error.log

Enviado desde mi X5pro mediante Tapatalk
 
No necesitas trabajar con rutas absolutas en Slim (ni en casi ninguna circunstancia en realidad). Te aconsejo que te deshagas de las rutas absolutas, recuerda que todas las peticiones pasan por el index.php y por tanto las rutas son relativas al directorio en que se encuentra dicho fichero.

Las redirecciones tampoco las debes solucionar con un header(), ya que hay otras operaciones que hay que hacer antes de redirigir y que estás olvidando, como por ejemplo session_write_close(). Intenta hacerlas funcionar con Slim, en lugar de cocinarte tú mismo la redirección.

Sobre tu problema, haz un phpinfo() sobre el servidor (pon esa función en un fichero PHP, súbelo y accede a él mediante el navegador), y fíjate en la versión de PHP que tiene, recuerda que Slim requiere PHP 5.5. Luego, para depurar, prueba a habilitar los errores con esto:

PHP:
<?php

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

Haz eso en el servidor remoto y mira el mensaje de error.
 
PHP Parse error: syntax error, unexpected 'class' (T_CLASS), expecting identifier (T_STRING) or variable (T_VARIABLE) or '{' or '$' in /var/www/html/vendor/slim/slim/Slim/Container.php on line 151
 
Linea 151 de Container.php

return $trace['class'] === PimpleContainer::class && $trace['function'] === 'offsetGet';
 
Que version de PHP usas en el servidor?

Enviado desde mi X5pro mediante Tapatalk
 
Bad news
PHP Version 5.4.16
El server es un Centos en Digital Ocean pense que tenia instalado la ultima version de php. Instalo version reciente y luego les digo.... Saludos
 
Muy habitual ;) CentOS está enfocado a servidor empresarial, es normal que no tenga los últimos paquetes.
 
Ok ya tengo la version 7.0.11 pero ahora cuando entro a la pagina redirecciona bien

$app->get('/', function ($request, $response, $args) use($app) {

return $response->withRedirect('/home');

});



pero me sale este error:


Not Found

The requested URL /home was not found on this server.
 
la pagina esta en esta direccion http dos puntos // 45 punto 55 punto 86 punto 232
 
Tienes el mod_rewrite de apache activado?

Enviado desde mi X5pro mediante Tapatalk
 
Mucha razon el httpd.conf como lo habia editado via celular con una app para conectarme al ftp, al parecer no habia salvado bien, por tanto busque el fichero original lo edite en la PC y ahora todo esta bien. Gracias a todo aquel que de alguna forma u otra ayudo, pregunto, comento , que hicieron que pudiera resolver el problema. ( AFelipeTrujillo, nodeNET, pabs11, oMega_2093), con ese codigo estoy creando un website con paginas estaticas. Mis saludos
 
Arriba