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

Symfony PHP Discussion :

include dans un contrôleur


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 97
    Par défaut include dans un contrôleur
    Bonjour,

    Je souhaite partager dans mon application Symfony2 les sessions du forum phpBB. J'ai dans mon dossier web un dossier nommé "forum", jusque là tout fonctionne bien lorsque je tape /forum/index.php j'arrive bien sur mon forum.

    Je me suis basé sur ce tuto pour partager les sessions :
    https://www.phpbb.com/support/docs/e...s-integration/

    J'ai donc inclus ce code dans un contrôleur :
    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
     
    public function indexAction()
        {
            define('IN_PHPBB', true);
            define('ROOT_PATH', "./forum");
     
            if (!defined('IN_PHPBB') || !defined('ROOT_PATH')) {
                exit();
            }
     
            $phpEx = "php";
            $phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : ROOT_PATH . '/';
            include($phpbb_root_path . 'common.' . $phpEx);
     
            $user->session_begin();
            $auth->acl($user->data);
            echo "<pre>";
            print_r($user);
            echo "</pre>";
            exit;
    }
    Et ça ne fonctionne pas j'ai juste une page blanche :/ Par contre si je crée un fichier test.php dans lequel je met exactement le même code et que je le place à l'intérieur du dossier web là ça fonctionne très bien, je vois pas trop d'où ça pourrait venir et suis un peu perdu là ^^'

    Si quelqu'un aurait une idée je suis preneur =)

    Merci d'avance

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Par défaut
    Solution pas clean mais qui risque de marcher: mets le code dans app.php

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 97
    Par défaut
    Il y a quelque chose de bizarre :

    Quand je met ce code dans app.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
     
    define('IN_PHPBB', true);
    define('ROOT_PATH', "./forum");
     
    if (!defined('IN_PHPBB') || !defined('ROOT_PATH')) {
        exit();
    }
     
    $phpEx = "php";
    $phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : ROOT_PATH . '/';
    include($phpbb_root_path . 'common.' . $phpEx);
    $user->session_begin();
    $auth->acl($user->data);
    echo "<pre>";
    print_r($user);
    echo "</pre>";

    ça fonctionne, il arrive à m'afficher mon $user connecté sur phpBB. Par contre il ne semble plus rentrer dans mon controller, j'ai fais un echo dedans suivi d'un exit et il ne se fait pas (aucune erreur il semble juste pas rentrer dedans).

    J'ai donc commencé à débugger, j'ai enlevé une à une en partant du bas les lignes jusqu'à l'affichage du echo de mon controller. Il semblerait que ça soit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    include($phpbb_root_path . 'common.' . $phpEx);
    qui pose problème, dès que je le fais, le contenu de mon controller est ignoré.



    Je suis ensuite passé dans le app_dev.php pour pouvoir voir les erreurs et là je vois ça qui bloque (c'est phpBB qui génère l'erreur) :
    http://image.noelshack.com/fichiers/...a-22-37-03.png

    Voici la ligne correspondante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        || !(in_array(@$_SERVER['REMOTE_ADDR'], array('127.0.0.1', 'fe80::1', '::1')) || php_sapi_name() === 'cli-server')
    C'est ce qui restreint l'accès au app_dev.php uniquement en local, je doute que le problème vient de là étant donné que ce code n'est présent qu'en dev :/


    Une fois ce code commenté j'ai exactement la même chose que dans app.php, uniquement l'affichage de mon $user, et mon echo de mon controller est ignoré

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Par défaut
    Là on entre dans les entrailles de phpBB et je n'y connais absolument rien donc je ne pourrais sans doute pas aider pour la suite (s'il y a d'autres problèmes venant de phpBB). J'ai cependant regardé leur code sur Github et j'ai vu ceci:

    https://github.com/phpbb/phpbb/blob/...quest.php#L100

    phpBB semble avoir choisi la méthode dure pour forcer ses développeurs à filtrer et valider les inputs, en désactivant purement et simplement les superglobales ($_POST, $_GET, $_SERVER...). C'est une philosophie... particulière, mais qui du coup affecte Symfony.

    La solution se trouve quelques lignes plus bas, en utilisant cette méthode pour réactiver les superglobales: https://github.com/phpbb/phpbb/blob/...quest.php#L118

    Tu dois donc utiliser l'objet global (quelle ironie!) $request défini dans compatibility_globals.php, lui-même inclus dans common.php.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $request->enable_super_globals();

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 97
    Par défaut
    Yep, ça a en effet résolu le problème de la variable $_SERVER (le screen que j'avais mis dans mon précédent post). Par contre il ne m'affiche toujours pas le echo de mon controller

    En fait j'ai l'impression que pour une raison obscure, à cause de l'inclusion du fichier de phpBB il ne rentre plus dans mon contrôleur... C'est bête j'y suis presque, si j'arrive à faire ça j'ai accès à la session de l'utilisateur phpBB et je pourrais enfin commencer à développer mon site

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Par défaut
    Où exactement dans app.php (ou mieux, essaie avec app_dev.php) as-tu ajouté ce code?

    N'affiche rien dans app.php, contentes-toi d'ajouter le code pour voir?

Discussions similaires

  1. [CKEditor] Impossible de placer un include dans la source
    Par metatron dans le forum Bibliothèques & Frameworks
    Réponses: 2
    Dernier message: 09/08/2006, 16h04
  2. [WSAD]Modification d'un include dans les jsp
    Par milton dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 31/03/2006, 15h01
  3. [Mail] Mettre un include dans une variable
    Par Death83 dans le forum Langage
    Réponses: 16
    Dernier message: 04/03/2006, 20h01
  4. [Référencement] Gestion des "includes" dans Google
    Par odelayen dans le forum Référencement
    Réponses: 5
    Dernier message: 20/04/2005, 17h07
  5. include dans un VBS ?
    Par rodolphedj dans le forum ASP
    Réponses: 20
    Dernier message: 16/12/2004, 22h57

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