require_once et paramètre sous forme de variable

require_once et paramètre sous forme de variable - PHP - Programmation

Marsh Posté le 30-09-2011 à 20:00:37    

Bonjour,
Je suis hébergé chez free, et on est assez bridé de point de vu des appels d'adresses absolu, donc je suis obligé de travailler avec des adresses relatives.
 
ah force de bidouiller, j'ai réussi à me faire quelque chose accepté par free, mais pas accepté par require_once !!  :non:  
 
d'un coté je fais :
 

Code :
  1. require_once '../protected_include/JSON.php';


 
ca marche.  :o  
 
D'un autre coté, je fais :
 

Code :
  1. $recul2 = '../protected_include/JSON.php';
  2. require_once($recul2);


 
et ça me lève l'erreur  
 

Code :
  1. Fatal error: require_once() [function.require]: Failed opening required '' (include_path='/mnt/165/sdb/6/1/eric.zinck/include:.:/usr/php5/lib/php') in /mnt/165/sdb/6/1/eric.zinck/test/protected_include/JSON_appel.php on line 57


 :ouch:  
 
quelqu'un aurait une idée ?

Reply

Marsh Posté le 30-09-2011 à 20:00:37   

Reply

Marsh Posté le 03-10-2011 à 21:51:25    

snif, je vais être obligé de mettre tous mes fichiers à la racine pour que l'include d'include marche... :( personne n'a eu à faire ça avant ?

Reply

Marsh Posté le 03-10-2011 à 22:06:25    

Mon réel problème caché derrière cette question est le suivant :
 
j'ai une organisation de répertoire qui est comme ceci : :o
 
index.php
routine.ajax.php
repertoireProtegeParhtacess/identificationBase.php
repertoireProtegeParhtacess/json.php //la bibliothèque pour compenser la version de free de php
repertoireProtegeParhtacess/JSON_appel.php //qui propose les deux fonction json_encode() et json_decode()
admin/index.php
admin/routineAdmin.ajax.php

 
 
donc naturellement, JSON_appel.php, fait un include('json.php').
 
et mes routine.ajax.php et routineAdmin.ajax.php font un include('JSON_appel.php')  :)  
 
Cela fonctionne sur mon serveur local  :jap: , mais sur free, ça marche plus pour routineAdmin.ajax.php, car il dit que JSON_appel.php ne trouve pas le json.php ... :pt1cable: (et l'autre fichier ajax à la racine trouve tout ce qu'il lui faut...)
 
===
-Je pourrai recopier le contenu de JSON_appel.php dans json.php, mais je trouve que c'est pas très propre d'écrire dans une bibliothèque  :(  
-Je pourrai faire partout 2 include() de JSON_appel.php et json.php, au lieu de faire un include de l'un qui fait lui même un include de l'autre, mais je trouve que c'est pas très élégant, déjà qu'il faut faire de la bidouille à cause d'une vielle version de free...  :ange:  
 
peut être devrais je faire un autre topic avec cette question :o


Message édité par naeco le 03-10-2011 à 22:07:04
Reply

Marsh Posté le 04-10-2011 à 08:49:44    

tu peux pas recréer dynamiquement les path absolus ? genre avec __FILE__
 

Code :
  1. define('__ROOT__', dirname(dirname(__FILE__)));
  2. require_once(__ROOT__.'/toto.php);

Reply

Marsh Posté le 04-10-2011 à 09:26:16    

Code :
  1. $recul2 = './protected_include/JSON.php';
  2. require_once($recul2);


 :??:  
 
Si index.php inclus JSON_appel.php qui inclus JSON.php
 
Le chemin "se fait à partir de" index.php (si tu inclus JSON_appel.php dans index.php, il "est" dans index.php)


Message édité par art_dupond le 04-10-2011 à 09:26:25

---------------
oui oui
Reply

Marsh Posté le 04-10-2011 à 18:25:15    

pour recréer le path : c'était l'objet initial du topic : c'est étrange, mais si je met le path, ça marche, et si je met le path dans un string puis dans le require, ça pète (cf le premier post), alors que c'est rigoureusement le même string...
 
 
art_dupond, oui et non : en local, avec WAMP, ca fonctionne, et sur free, ça fonctionne pas. Je pense qu'il doit y avoir une conf que je connais pas sur le serveur à ce propo. Mais dans tous les cas, je ne pourrai pas changer cette conf chez free, donc le mieux serait de savoir pourquoi mettre le path dans une variable puis lui passer en paramètre ne fonctionne pas... :/

Reply

Marsh Posté le 05-10-2011 à 15:11:23    

est-ce qu'en local, ton site est directement sous localhost ou dans un sous-répertoire ?
 
Si c'est dans un sous-répertoire, peut-être qu'il faudrait faire un virtualhost pour que ça se comporte pareil que chez free ?


---------------
oui oui
Reply

Marsh Posté le 05-10-2011 à 18:39:19    

En effet, ça doit être l'explication.
Mais du coup, si je le fais, je vais avoir le problème des deux cotés lol, donc il faudrait d'abord que je trouve une solution à cet include d'include :o

Reply

Marsh Posté le 06-10-2011 à 11:23:26    

tu vas avoir le même problème des deux côtés => ça ne fait qu'un seul problème qui sera résolu plus facilement via le vhost qu'en essayant essayant de bidouiller (à mon avis :jap:)

 


edit: + je pense qu'il vaut mieux essayer d'avoir le plus possible les mêmes environnements (local vs free)


Message édité par art_dupond le 06-10-2011 à 11:25:15

---------------
oui oui
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed