prinick96 / Ocrend-Framework

Ocrend Framework Repositorio Oficial, Comunidad en https://foro.ocrend.com
https://framework.ocrend.com
MIT License
44 stars 28 forks source link

Tengo problemas para instalar Framework en un VPS con plesk #29

Closed jemanago closed 7 years ago

jemanago commented 7 years ago

Hola Necesito de su ayuda estoy tratando de instalar el framework en un VPS que tiene plesk, ya he modificado correctamente el config.php, "incluso funciona bien de manera local en WAMP", pero lo subo a server deja de mostrarme los diferentes tipos de login que tengo, a los cuales acceso atraves de URLs amigas, pero hay sido imposible solo me trabaja cuando ejemplo lo pongo en la carpeta con el que se hizo en el server de desarrollo, me funciona asi http://ejemplo.com/carpeta/ o http://ejemplo.com/carpeta/admin y desde hay todo funciona bien, pero yo requiero, que funcione de la siguiente forma http://ejemplo.com/admin, he realizado los cambios que ejemplo realizo marc2684 en exprencia 1a1, pero sigue sin funcionar de la manera que requiero, Alguien tiene una idea de como ayudarme?

Saludos

Gracias

prinick96 commented 7 years ago

No entiendo, en http://ejemplo.com/carpeta/admin tienes un framework y en http://ejemplo.com/carpeta/ otra instalación del framework? en ambas sólamente estás usando url amigables?

Exactamente cual es el problema? no te toma la URL amigable o qué?

jemanago commented 7 years ago

el problema exacto es que no me esta tomando las url amigables, ya que desempaquete el framework en el raiz y el desarrollo se hizo en una carpeta ROOT', '/miapp/' y 'URL', 'http://ejemplo.com/miapp/' , he probado , cambiando el valor de las variables en config.php y las he puesto de la siguiente forma ROOT', '/' y 'URL', 'http://ejemplo.com/', pero no me las toma alguna idea?

Saludos

prinick96 commented 7 years ago

Cambia tu Router.php por:

<?php

# Seguridad

defined('INDEX_DIR') OR exit('Ocrend software says .i.');

//------------------------------------------------

class Router {

  //------------------------------------------------

  public $dir = __ROOT__;
  private $url = null;
  private $controller = null;
  private $method = null;
  private $id = null;

  //------------------------------------------------

  private $routes = array(
    '/controller' => 'alphanumeric',
    '/method' => 'none',
    '/id' => 'int'
  );

  //------------------------------------------------

  /**
    * Constructor, inicializa las Rutas y obtiene los parámetros principales pasados por la URL de forma amigable.
    * Todas las variables pasadas por la URL de forma amigable, son independientes y no forman parte del arreglo $_GET
    *
    * @param string $DATABASE, se pasa de forma opcional una base de datos distinta a la definida en DATABASE['name'] para conectar
    *
    * @return void
  */
  public function __construct() {

    Helper::load('strings');
    $this->url = urldecode(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH));

    if($this->dir == '/' && strlen($this->url) > strlen($this->dir)) {
      @$this->url[0] = '';
    } else {
      $this->url = explode($this->dir,$this->url);
      $this->url = $this->url[1];
    }

    if(!empty($this->url) and $this->url != $this->dir) {
      $this->url = explode('/',$this->url);

      $this->controller = Strings::alphanumeric($this->url[1]) ? strtolower( $this->url[1] ) . 'Controller' : 'dashboardController';
      $this->method = array_key_exists(2,$this->url) ? $this->url[2] : null;
      $this->id = array_key_exists(3,$this->url) ? $this->url[3] : null;

    } else {
      $this->controller = 'dashboardController';
    }

  }

  //------------------------------------------------

  /**
    * Retorna el controlador actual
  */
  public function getController() : string {
    return trim($this->controller);
  }

  //------------------------------------------------

  /**
    * Retorna el método actual
  */
  public function getMethod() {
    return $this->method;
  }

  //------------------------------------------------

  /**
   * Retorna el id actual
  */
  public function getId() {
    return $this->id;
  }

  //------------------------------------------------

  /**
    * Crea una ruta de URL Amigable
    *
    * @param string $name: Nombre de la ruta
    * @param string $type: Regla de filtrado de la ruta
    *
  */
  public function setRoute(string $name, string $type = 'alphanumeric') {
    if(!in_array($type,['letters','int','float','none'])) {
      $type = 'alphanumeric';
    }
    $this->routes[$name] = $type;
  }

  //------------------------------------------------

  /**
    * Devuelve el valor que esté entrando por la ruta seleccionada, creada con setRoute()
    *
    * @param string $name: Nombre de la ruta
    *
    * @return contenido de la ruta o null si no cumple la regla definida con setRoute() para esa ruta
  */
  public function getRoute(string $name) {

    Helper::load('arrays');
    $index = Arrays::get_key_by_index($name,$this->routes);

    if(!is_array($this->url)) $this->url = array();

    if($index >= 4 and array_key_exists($index,$this->url)) {
      switch ($this->routes[$name]) {
        case 'alphanumeric':
          return Strings::alphanumeric($this->url[$index]) ? strtolower($this->url[$index]) : null;
        break;
        case 'letters':
          return Strings::only_letters($this->url[$index]) ? strtolower($this->url[$index]) : null;
        break;
        case 'int':
          return is_numeric($this->url[$index]) ? (int) $this->url[$index] : null;
        break;
        case 'float':
          return is_numeric($this->url[$index]) ? (float) $this->url[$index] : null;
        break;
        default:
          return $this->url[$index];
        break;
      }
    }

    return null;
  }

}

?>

Si no te funciona regresa al router original y entonces el problema estará en los .htaccess o revisar el mod_rewrite.

marcgdl commented 7 years ago

Hola, he tratado de entender lo que dices y la verdad no te entiendo y creo que eso pasa en general.

Según indicas tu hiciste tu desarrollo local e ingresabas con "localhost/miapp/(aqui rutas amigables)".. ?

Intenta mostrar con algún explorador de tu host, el arbol de archivos, es decir donde esta colocado el framework.

jemanago commented 7 years ago

Hola gracias a prinick96 y a marc2684, por a ver dedicado su tiempo en ayudarme, la respuesta de prinick96 fue la perfecta, ya esta funcionando correctamente

Saludos