Bonjour,
J'ai récemment créé un programme en PHP/MySQL. Une fois qu'il est exécuté, il affiche en sortie un ensemble de données (textuelles). Jusque là, tout fonctionne parfaitement.

Je souhaiterai intégrer ces données et créer un powerpoint à la volée dans lequel ces données seraient mises.
Pour cela, j'ai trouvé après quelques recherches une libraire nommée PHPPowerpoint qui fait exactement cela. Il s'agit en fait d'un ensemble de classes qui permet de créer des slides (à partir de rien) et d'ajouter des zones de textes, images etc.
J'ai téléchargé puis installé cette librairie (dernière version PHPPowerpoint) et l'ai testé sur mon pc perso en local, elle fonctionne très bien.
Voici l'arborescence de la libraire:
- PHPPowerpoint/Tests/02presentation.php
- PHPPowerpoint/Classes/PHPPowerpoint/ (dossier, qui contient pleins de fichiers .php de la librairie)
- PHPPowerpoint/Classes/PHPPowerpoint.php
Le développeur qui a créé cette libraire a même pensé à faire plusieurs scripts de tests qui se trouvent dans le répertoire "Tests". Pour mon test, j'ai essayé d'exécuter le fichier ./Tests/02presentation.php", qui génère dans le répertoire courant un fichier 02presentation.pptx si le script s'exécute correctement.
Config: OS: Windows Vista, plateforme de dév: WAMP5 (php version 5.3.0).
Problème: 
Je souhaiterai maintenant utiliser cette librairie sur un serveur. Sa configuration est un peu différente (OS: Ubuntu, PHP Version 5.3.2-1ubuntu4.7).
J'ai correctement installé apache et mysql, puis copié cette librairie dans "/var/www/" sous le répertoire "PHPPowerpoint".
Je lance le test: http://sous-domaine.domaine.com/PHPP...esentation.php, et là, il n'affiche que le message suivant: "21:42:32 Create new PHPPowerPoint object".
Concrètement, si on regarde dans le code source du fichier ./PHPPowerpoint/Tests/02presentation.php, je constate d'après les logs d'apache (/var/log/apache2/error.log) qu'il n'arrive pas à construire l'objet PHPPowerpoint car il n'arrive pas à trouver le fichier "./PHPPowerpoint/Classes/Powerpoint.php".
Les fichiers de logs m'indiquent des warning/erreurs.
Je pense que le problème vient de l'inclusion tout simplement des fichiers ligne 35 et 38, nécessaire pour accéder à la classe PHPPowerpoint (et à son constructeur) et aux différentes méthodes sous-jacentes.
D'après les logs, il n'arrive pas à y accéder.
Essais effectués:

1 - J'ai essayé de mettre le chemin en absolu et non en relatif pour lui indiquer précisément où étaient les classes (include '/var/www/PHPPowerpoint/Classes/PHPPowerpoint.php', par exemple, au lieu d'un simple include 'PHPPowerpoint', mais il ne la trouve toujours pas).
2 - Je suis aussi passé par la solution relative:
include ($_SERVER['DOCUMENT_ROOT']."/PHPPowerpoint/Classes/PHPPowerpoint.php";
mais cela n'a rien changé.
3 - J'ai modifié le set_include_path() ligne 32 et ai rajouté le chemin absolu vers le répertoire classe après le PATH_SEPARATOR, mais cela ne change rien
4 - Enfin, j'ai regardé le fichier php.ini du serveur apache, et j'ai modifié la variable instance_path de façon à rajouter par défaut le chemin /var/www/PHPPowerpoint/Classes/, mais cela ne change rien non plus.
5 - J'ai même modifié l'ensemble des include, require, require_once des fichiers de la librairie en mettant exclusivement des chemins absolus pour indiquer où chercher les fichiers, mais cela n'a pas eu d'effet.
6 - Dernière chose, en début du fichier 02presentation.php, il y a le code suivant:
1 2 3 4
| set_include_path(get_include_path() . PATH_SEPARATOR . '../Classes/'); ,
include 'PHPPowerPoint.php';
include 'PHPPowerPoint/IOFactory.php';
$objPHPPowerPoint = new PHPPowerPoint(); |
Je pense qu'il y a un problème avec le set_include_path et qu'il n'arrive pas à indiquer où trouver le fichier /var/www/PHPPowerpoint/Classes/PHPPowerpoint à mon fichier /var/www/PHPPowerpoint/Tests/02presentation.php
Il continue d'afficher des warning et une erreur à la fin car il ne trouve pas la classe "PHPPowerpoint". Je suis à court d'idée à ce niveau.
Est-ce que vous sauriez me dire svp pourquoi il n'arrive pas à le trouver et comment faire pour que les include fonctionnent correctement ? 
Merci beaucoup par avance pour votre aide.
PS: je pense que ce post est sensiblement similaire, mais je n'ai pas vraiment compris l'histoire du CLI
Partager