php4 vers php5: problème de chemin

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : php4 vers php5: problème de chemin

Re: php4 vers php5: problème de chemin

par samsoul » 16 nov. 2012, 17:26

Bon, j'ai a priori réglé le problème d'inclusion avec include_path dans le premier fichier appelé après index.php
Je n'ai pas réussi avec un php.ini

J'ai réussi à comprendre ce que signifiait $config = Application::config('MVC');
Avec les dernières modifs, le script passe cette étape.
Mais la migration n'est pas terminé, il y a encore des erreurs dans le déroulement du script un peu plus loin...

Je vous en fait par ici ou mieux vaut-il que j'ouvre un nouveau post?

Re: php4 vers php5: problème de chemin

par samsoul » 14 nov. 2012, 00:12

Bon, je me penche sur la façon de mettre à jour PEAR. Les différents fichiers sont un peu éclatés...

Sinon, en restant actuellement sur une rectification manuelle des chemins, j'arrive à une nouvelle erreur qui est la suivante:

Fatal error: Class 'Application' not found in /home/natation/data/classes/MVC/Controleur.php on line 14

A cette ligne, dans le fichier Controleur.php j'ai ce code. Je ne le comprend pas vraiment...
$config = Application::config('MVC');

Si ça peut aider à mieux comprendre, j'ai d'abord ceci dans mon fichier index.php:

<?php
require 'conf_php.php';
require_once '../../data/classes/MVC/Controleur.php';
new Controleur();
?>


Puis mon fichier Controleur.php où l'erreur est signalée:


1:<?php
2:ini_set('include_path', '.:/home/natation/data/classes');
3:require_once 'URL.php';
4:ini_set('include_path', '.:/home/natation/data/classes');
5:require_once 'Objet.php';
6:
7:
8: class Controleur extends Objet
9: {
10: function Controleur()
11: {
12: $this->initObjet();
13:
14: $config = Application::config('MVC');
15: if (isset($_GET['action'])) {
16: if($_SERVER['REQUEST_METHOD'] == 'POST') {
17: $fichierClasse = $this->adresseFichierClasse('action', $_GET['action']);
18: $classe = basename($fichierClasse, '.php');
19:
20: if (file_exists($fichierClasse)) {
21: require_once $fichierClasse;
22: $action = new $classe();
23: $action->initObjet();
24: $action->traitementAction();
25: } else {
26: trigger_error("Action \"${_GET['action']}\" inconnue", E_USER_ERROR);
27: }
28: }
29:
30: $url = new URL('', '');
31: Application::redir($url->get('adresse'));
32: } else {
33: if($_SERVER['REQUEST_METHOD'] == 'GET') {
34: if (isset($_GET['vue'])) {
35: $nomVue = $_GET['vue'];
36: } else {
37: $nomVue = $config['vueParDefaut'];
38: }
39:
40: $fichierClasse = $this->adresseFichierClasse('vue', $nomVue);
41: $classe = basename($fichierClasse, '.php');
42:
43: if (file_exists($fichierClasse)) {
44: require_once $fichierClasse;
45: $vue = new $classe();
46: $vue->initObjet();
47: $vue->traitementVue();
48: $vue->affichageVue();
49: } else {
50: trigger_error("Vue \"$nomVue\" inconnue", E_USER_ERROR);
51: $url = new URL('', '');
52: Application::redir($url->get('adresse'));
53: }
54: }
55:
56: exit();
57: }
58: }
59:
60: function adresseFichierClasse($rep, $nom)
61: {
62: $fichier = str_replace('.', '/', $nom);
63:
64: return Application::repClasses() . "/$rep/$fichier.php";
65: }
66: }




Une petite lumière sur cette class Controleur ...
Une idée... ??

Merci...

Re: php4 vers php5: problème de chemin

par moogli » 12 nov. 2012, 21:13

un php.ini "perso" si la conf de php le permet, sinon en première ligne du 1er script appelé (index ?)


@+

Re: php4 vers php5: problème de chemin

par samsoul » 12 nov. 2012, 19:39

@moogli : "tu devrais mettre le include_path une bonne fois pour toute ça devrait régler le problème d'inclusion. "
-> il faut que je me créé un php.ini c'est bien ça? Le mieux c'est de le poser où? A la racine? Tu me conseille de le construire comment?

@ Mazarini: j'essai de voir pour une mise à jour de PEAR. Effectivement, la version est aussi ancienne que le site donc certain élément sont peut être dépréciés ( PEAR.php,v 1.2 2005/08/02)

Bon, je regarde et essai de mettre en pratique les pistes que vous m'avez donné et je reviens vers vous.
Si vous avez d'autres pistes n'hésitez pas...

Merci pour vos intervention :P

Re: php4 vers php5: problème de chemin

par Mazarini » 12 nov. 2012, 17:11

De ce que je comprends, la première vérification à faire est l'existence du fichier /home/natation/data/conf/natation/mysql.xml (mais je suppose que c'est déjà fait). Le contenu me semble bon.

Autrement c'est la valeur local qui s'applique pour les paramètres. Je ne maitrise pas open_basedir, mais je suppose que ca valeur est compatible avec le chemin de ton fichier. Par contre il me semble que ce fichier est accessible depuis un navigateur (vérifier l'utilisation d'un .htaccess)

il faudrait modifier le niveau d'erreur dans le php.ini (en même temps que l'include_path) en mettant E_ALL. Un petit message d'info peut permettre de comprendre une erreur. Par exemple un problème d'ouverture de fichier.

Edit : Il me semble que la fonction qui pose problème est lié à PEAR, est ce que tu utilise une version compatible avec PHP 5 de PEAR ?
($root =& $config->parseConfig($fichier, 'xml');)

Re: php4 vers php5: problème de chemin

par moogli » 12 nov. 2012, 15:56

tu devrais mettre le include_path une bonne fois pour toute ç devrait régler le problème d'inclusion.


dans code vire le & ligne 453, le passage par référence étant par défaut en php5.

ensuite tu peaux ajouter un var_dump($root); ligne 454 pour voir si la ligne 453 fait bien son boulot :)



@+

Re: php4 vers php5: problème de chemin

par samsoul » 12 nov. 2012, 15:13

Bonjour moogli,

Voici ce que contient le fameux fichier XML

<?xml version="1.0" encoding="iso-8859-1"?>
<mysql>
<serveur>localhost</serveur>
<base></base>
<login></login>
<passe></passe></mysql>


J'ai volontairement effacé ce qu'il y avait dans base, login et passe. C'est données étaient bien celle qui correspondaient au nom de la base de donnée, le login pour se connecter et le mot de passe correspondant.

Pour ce qui est du changement des fichiers, à priori non, pas de changement. Juste une migration du serveur de php4 vers php5. Après je ne sait pas si ils ont changé de serveur ou pas...

Et enfin concernant Application.php, au niveau de la ligne 458 il y a:

447: /**
448: * Lecture d'un fichier XML de configuration
449: */
450: static function _lireFichierXML($fichier)
451: {
452: $config = new Config();
453: $root =& $config->parseConfig($fichier, 'xml');
454: $classInstance = 'Config_Container';
455: if (/*is_a($root, 'Config_Container')*/$root instanceof $classInstance ) {
456: $c = $root->toArray(FALSE);
457: } else { // classe : XML_Parser_Error
458: trigger_error("Erreur avec le fichier $fichier : " . $root->getMessage(), E_USER_WARNING);
459: $c['root'] = array();
460: }
461:
462: return $c['root'];
463: }


Merci d'avance

Re: php4 vers php5: problème de chemin

par SamSoul. » 12 nov. 2012, 15:01

Bonjour Mazarini,

La première intervention n'a pas été fait pas moi. De ce que j'ai vu ils ont modifié les "$" et ajouté "public" à certaine fonction...
Au niveau des modifications que j'ai effectué jusqu'à présent, je suis intervenu sur le chemin des fichiers.
Je suis partis de index.php et je suis remonté.

Ancien code de index.php<?php
require 'conf_php.php';
require_once 'MVC/Controleur.php';
new Controleur();
?>

Nouveau code:
<?php
echo "Debut du fichier index.php </br>";
require 'conf_php.php';
echo "appel de conf_php.php reussi </br>";
require_once '../../data/classes/MVC/Controleur.php';
echo "appel de Controleur.php reussi </br>";
new Controleur();
?>

Le fichier conf_php se situe comme index.php dans le dossier admin
Par contre j'ai dût reprendre le chemin pour Controleur.php
De même, dans Controleur.php j'ai du forcer les chemins:

Ancien code:
<?php
require_once 'URL.php';
require_once 'Objet.php';

Nouveau code:
<?php
ini_set('include_path', '.:/home/natation/data/classes');
require_once 'URL.php';
ini_set('include_path', '.:/home/natation/data/classes');
require_once 'Objet.php';


Est-ce que ce sont ce genre d'informations que vous souhaitiez?

Concernant le safe_mode il est sur off
Concernant le open_basedir, il y a un chemin pour Local Value et pas de valeur pour Master Value

Merci pour votre aide

Re: php4 vers php5: problème de chemin

par moogli » 12 nov. 2012, 13:29

le message d'erreur indique un fichier "mal formé" il est correct se fichier xml ?

Les fichiers n'ont pas changé de place ?

c'est juste la version de php qui a changé ? (pas la machine on l'emplacement des fichiers ?)

y'a a quoi ligne 458 du fichier /home/natation/data/classes/Application.php ? (voir autour aussi)


@+

Re: php4 vers php5: problème de chemin

par Mazarini » 12 nov. 2012, 11:51

Le problème peut provenir de safe_mode ou de open_basedir pour le fichier /home/natation/data/conf/natation/mysql.xml

Peux tu indiquer quelles modifications sont nécessaire pour que le problème soit mieux "cernable" ?

php4 vers php5: problème de chemin

par samsoul » 12 nov. 2012, 09:12

Bonjour,

Le serveur de notre site internet est passé il y a peu en php5.
Notre application étant en php4, nous avons commencé la migration de php4 vers php5.
Une partie a été réalisé mais nous sommes confrontés à un problème de connexion au backoffice...
Le premier message d'erreur qui s'affichait sur la page de connexion à l'admin était celui-ci:
===============================================================================
E_USER_WARNING : Erreur avec le fichier /home/natation/data/conf/natation/mysql.xml : XML_Parser: Not well-formed (invalid token) at XML input line 1 in/home/natation/data/classes/Application.php on line 458
Application::_lireFichierXML (/data/classes/Application.php:424)
Application::_lireConfig (/data/classes/Application.php:73)
Application::init (/public_html/conf_php.php:7)
require_once (/public_html/admin/conf_php.php:2)
require (/public_html/admin/index.php:2)
===============================================================================

J'ai donc essayé de voir ce qui pouvait provoquer l'erreur...
Et je me suis apperçu qu'il y avait déjà un souci dans l'accès de l'application à certains fichiers (index.php, conf_php.php et les appels de fichiers contenus dans ces fichiers)
J'ai commencé à rectifier les choses mais me demande pourquoi je suis obligé de refaire tous les chemins?
Y-a-t-il un changement entre php4 et php5 qui implique cela? Un problème de configuration?
Et donc si il n'y aurait pas une manip à faire pour rétablir les chemins pour l'ensemble du site?
Ou peut-être ne suis-je pas sur la bonne voie?

Merci pour votre aide et vos conseils.