IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Conseils sur NGINX, Grunt, Routeur & SSH


Sujet :

Langage PHP

  1. #1
    Candidat au Club Avatar de Naruhiko315
    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2013
    Messages : 14
    Points : 4
    Points
    4
    Par défaut Conseils sur NGINX, Grunt, Routeur & SSH
    Bonsoir,

    J'aimerais re-développer mon site internet avec les nouvelles connaissances et technologies disponibles; mais pour cela j'aurais bien espéré avoir vos avis ainsi que quelques réponses à des questions qui me trottent dans la tête:

    • Mon code est organisé en utilisant la fonction ob_start();, dois-je utiliser un ob_end_clean() ou un ob_end_flush(); (ou encore une autre façon de vider le tampon) après la récupération de mon contenu afin d'optimiser mon code ?
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      // Actuellement
      ob_start(); // Récupère le contenu de la page
      require 'templates/router.php'; // Inclus le fichier qui s'occupe de l'inclusion des pages
      $content = ob_get_clean(); // Envoi le contenu de la page
      require 'templates/defaut.php'; // Inclus le modèle de page en remplaçant le " $content "
    • Avez-vous peut-être une meilleure méthode (plus optimisée) pour inclure dans les pages que la fonction ob_start(); ?
    • Comme vous avez pu le voir ci-dessus, j'utilise un fichier " router.php ". Celui-ci n'est pas réellement un routeur optimisé et portatif (avec des class par exemple). Il inclut directement les fichiers après plusieurs vérifications; mais qui a le mérite de fonctionner parfaitement dans mon cas. Je souhaiterais seulement avoir vos conseils et recommandations sur celui-ci:
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      41
      42
      43
      44
      45
      46
      47
      48
      49
      50
      51
      52
      53
      54
      55
      56
      57
      58
      59
      60
      61
      62
      63
      // Définissions des variables au début pour éviter les erreurs
      $file = null;
      $chemin = null;
      $no_exist = null;
       
      $remove_slash = substr($_GET['page'], 1); // Supprime dans l'adresse de la page le premier slash (/accueil, par exemple)
      $url_coupe = explode('/', $remove_slash); // Découpe l'adresse pour pouvoir s'occuper de chacune des parties
       
      // Chemin demandé via l'URL & comptage des paramètres dans l'URL
      $chemin = 'pages/' . $remove_slash . '.php';
      $count = count($url_coupe);
       
      // Boucle de vérification
      for ($i = 0; $i <= $count; ++$i) {
          // Vérifie si un fichier .php n'existe pas sur base du chemin
          if (!file_exists($chemin)) {
              $chemin = str_replace('.php', '', $chemin);
       
              // Vérifie si un dossier n'existe pas sur base du chemin
              if (!file_exists($chemin)) {
                  // Le fichier rechercher n'existe définitivement pas
                  $no_exist = true;
       
              // Si un dossier existe sur base du chemin
              } else {
                  // Vérifie s'il y a un slash au bout du chemin avec le dossier sinon le rajoute
                  if (!preg_match("/\/$/", $chemin)) {
                      $chemin .= '/';
                  }
       
                  // Si le dossier d'accueil existe
                  if (file_exists($chemin . 'accueil.php')) {
                      // Défini qu'on est à la racine du dossier
                      $file = true;
                  } else {
                      // Le fichier rechercher n'existe définitivement pas
                      $no_exist = true;
                  }
              }
          }
      }
       
      // Si l'URL est vide ou que le dossier a un "accueil" par défaut
      if ($file == true) {
          $chemin .= 'accueil.php';
      }
       
      // Si la page demandée n'existe pas
      if ($no_exist == true) {
          Erreur::notFound();
      }
       
      // Vérifie les permissions pour les panels
      if ($url_coupe['0'] === 'bf-admin') {
          if (!$user->isAdmin()) {
              Erreur::forbidden();
          }
      } elseif ($url_coupe['0'] === 'bf-modo') {
          if (!$user->isModo() && !$user->isAdmin()) {
              Erreur::forbidden();
       
      // Inclus la page demandée
      require $chemin;
    • Mon serveur est sous NGINX, et lorsque je fais des erreurs PHP dans un fichier accessible en " .php " (malgré la présence de mon routeur ci-dessus (le routeur crée des urls comme celles-ci: www.domaine.com/accueil, mais les fichiers .php restent accessibles quand ils sont pas dans le dossier " pages/ ": www.domaine.com/test.php )) elles s'affichent. En revanche, si je fais une erreur dans un fichier créé et traité par la redirection de mon routeur, j'ai une erreur " HTTP ERROR 500 ". C'est peut-être un peu incompréhensible, alors voici des exemples (le contenu et l'erreur PHP est la même pour les deux fichiers):

      Je ne pense pas que ça vient du fichier " router.php ", mais plutôt de mes règles NGINX qui s'occupent de mes URLs. Cependant, je ne vois pas comment régler ce comportement afin que les erreurs s'affichent même sur mes pages redirigées par NGINX sans me couper l'accès à la page ( HTTP ERROR 500 ). Voici la configuration NGINX par rapport à PHP:
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      location / {
          try_files $uri /index.php?page=$uri;
      }
       
      location ~ /\. {
          deny all;
      }
       
      location ~* \.php$ {
          try_files $uri =404;
          fastcgi_split_path_info ^(.+\.php)(/.+)$;
          fastcgi_pass    127.0.0.1:9000;
          fastcgi_index   index.php;
          include         fastcgi_params;
          fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script_name;
      }
      D'ailleurs les fichiers " .php " (s'ils existent) restent accessibles dans une url du type " www.domaine.com/test.php ", mais comment empêcher ce comportement ou/et comment rediriger vers une page 404 par exemple si le fichier .php n'existe pas ?
    • Pour mon nouveau site, j'utilise " Grunt ". Toutes les installations fonctionnent, mais je me demande si ce ne serait pas possible de créer un dossier comportant tous les fichiers; car actuellement j'ai à ma racine ces nouveaux fichiers/dossiers: " Gruntfile.js, node_modules, package.json " et je ne trouve pas ça propre. Ca aurait été mieux de mettre tout cela, si c'est possible, dans un dossier " grunt/ ".
    • J'utilise ssh2_connect(); pour me connecter à mon serveur SSH, mais je n'aime pas voir mes informations SSH en clair dans les fichiers, par conséquent je me suis redirigé vers la fonction ssh2_auth_pubkey_file(); ( http://php.net/manual/fr/function.ss...ubkey-file.php). Mais malgré de nombreux codes, aucun ne fonctionne sous ma machine (Debian 8). J'ai vérifié les commentaires de la documentation et je suis tombé sur celui-ci:
      This function has a known bug (https://bugs.php.net/bug.php?id=58573) under some Linux installations: you can't encrypt your private key if you've compiled libssh2 using libgcrypt. According to the bug page, the solution is to rebuild libssh2 with OpenSSL. (Or don't encrypt your private key, but that seems irresponsible somehow.) This isn't a bug report -- the bug is apparently already being fixed -- but a note for others, because it took me at least an hour of Googling to realize the problem wasn't with my own code.
    Par conséquent, je ne vois pas trop comment faire car je ne comprends pas comment "rebuild libss2"... auriez-vous une idée ?

    Je suis désolé pour le nombre de question, mais je voudrais vraiment faire ça proprement ^^ ! Merci d'avance pour vos réponses (même si vous ne connaissez la réponse qu'à l'une de mes questions, ça m'aiderait déjà énormément) !

    Cordialement,

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    pour avoir des meilleures réponses à vos questions, je pense que vous devriez les découper en 3 : 2 questions dans le forum PHP pour "ob_start" et la connexion SSH ainsi qu'une question au sujet de Nginx dans le forum "serveurs" :
    https://www.developpez.net/forums/f8...rs-apache-iis/

  3. #3
    Candidat au Club Avatar de Naruhiko315
    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2013
    Messages : 14
    Points : 4
    Points
    4
    Par défaut
    Merci de votre conseil, j'ai donc fait mon sujet ici: https://www.developpez.net/forums/d1...x/#post9007999 !

  4. #4
    Candidat au Club Avatar de Naruhiko315
    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2013
    Messages : 14
    Points : 4
    Points
    4
    Par défaut
    Je relance mon sujet !

  5. #5
    Candidat au Club Avatar de Naruhiko315
    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2013
    Messages : 14
    Points : 4
    Points
    4
    Par défaut
    Je relance ^^

  6. #6
    Candidat au Club Avatar de Naruhiko315
    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2013
    Messages : 14
    Points : 4
    Points
    4
    Par défaut
    Je relance ^^

  7. #7
    Candidat au Club Avatar de Naruhiko315
    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2013
    Messages : 14
    Points : 4
    Points
    4
    Par défaut
    J'ai réussi a régler le problème du router en rajoutant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ini_set('display_errors', 'on');
    error_reporting(E_ALL);
    En début de l'index.php ! Maintenant il me reste donc les autres questions :/

  8. #8
    Candidat au Club Avatar de Naruhiko315
    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2013
    Messages : 14
    Points : 4
    Points
    4
    Par défaut
    Je relance

  9. #9
    Candidat au Club Avatar de Naruhiko315
    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2013
    Messages : 14
    Points : 4
    Points
    4
    Par défaut
    Je relance !

  10. #10
    Candidat au Club Avatar de Naruhiko315
    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2013
    Messages : 14
    Points : 4
    Points
    4
    Par défaut
    Je relance

Discussions similaires

  1. Réponses: 0
    Dernier message: 30/05/2016, 12h40
  2. Conseil sur modélisation
    Par Tankian dans le forum Schéma
    Réponses: 7
    Dernier message: 11/08/2004, 11h13
  3. cherche conseil sur livre pour jbuilder
    Par med1 dans le forum JBuilder
    Réponses: 3
    Dernier message: 09/06/2004, 13h33
  4. [débutant] conseils sur contraintes et alter table
    Par maysa dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 26/05/2004, 09h03
  5. Recherche Livre / Conseils sur la conception de Base
    Par Yeuma dans le forum Décisions SGBD
    Réponses: 7
    Dernier message: 02/01/2004, 14h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo