OVH Community, votre nouvel espace communautaire.

RePost :Fatal error: Namespace declaration statement has to be the very first stateme


gentilcopain
03/02/2016, 16h27
OK, j'ai réussi à faire marcher mes classes avec composer en sytème de fichier en cascade en ligne sur OVH, comme c'était voulu au départ ouf...
Donc avec
1. la modif conseillée par l'équipe d'OVH c'est à dire dans le .ovhconfig changer environment; production en environment : development +
2. passer mes fichiers contenant mes classes et donc mes namespace à la moulinette de babelpad pour enregistrer ces fichiers en UTF-8 sans BOM +
3. entre
et bien ça a fini par marcher... Donc pour l'instant ça va... Je vais tester le reste du site maintenant que j'arrive à faire fonctionner au moins l'index...

Merci pour vos interventions. Je n'hésiterai pas à revenir vers vous.

gentilcopain
03/02/2016, 14h00
Je suis bien à PHP 5.6 :

http://www.divinsmillesimes.com/phpinfos

Visiblement la question sur AJAX est résolue en rajoutant devlopement dans le .ovhconfig. Mais ça ne résout pas le pb de fatal error : namespace declaration... J'ai a nouveau appelé la classe avec la syntaxe de composer. \MonProjet\ChateauRepository() , le pb est toujours là...

- - - Mise à jour - - -

Je crains que si je n'arrive pas à faire fonctionner mes classes composer je doive redéfinir toutes mes requêtes et mes PDO.... arrg

janus57
03/02/2016, 11h45
Bonjour,

vérifier avec un phpinfo ?

c'est lié à ceci : https://forum.ovh.com/showthread.php...l=1#post661114 ?

Cordialement, janus57

gentilcopain
03/02/2016, 11h37
Citation Envoyé par janus57
Bonjour,

version de PHP peut être ?

Sinon c'est pas un bug du forum c'est juste que votre post est passé en modération car vous avez surement mis trop de lien/balise BBCode.

Cordialement, janus57
Normalement je suis en PHP 5.6

mon .ovhconfig :

app.engine=php
app.engine.version=5.6
http.firewall=none
environment=production

janus57
03/02/2016, 11h29
Bonjour,

version de PHP peut être ?

Sinon c'est pas un bug du forum c'est juste que votre post est passé en modération car vous avez surement mis trop de lien/balise BBCode.

Cordialement, janus57

gentilcopain
03/02/2016, 10h11
J'ai supprimé les définitions de composer et remplacé par des require once et des appels de classes classiques. Ca marche comme ça...

ini_set('display_errors',1);
require_once 'vendor/autoload.php';
require_once('classes/ChateauRepository.php');
$ChateauRepository= new ChateauRepository();

J'en déduis que OVH en mutualisé Pro n'est pas compatible avec composer... Bizarre parce que les classes définies pour ma base de donnée avec les getter et les setter sont reconnues.... Quelques explications seraient les bienvenues...

gentilcopain
03/02/2016, 09h28
Comme mon message originel n'a pas été posté à cause d'un bug du forum, je me permets de le reposter...

Tout marchait très bien sur mon serveur local. Mais quand j'ai fait la mise en ligne sur mon mutualisé OVH en PRO j'ai obtenu cette erreur.

Fatal error: Namespace declaration statement has to be the very first statement in the script in /home/frenchto/www4/classes/ChateauRepository.php on line 2

Le début des 2 fichiers concernés :

_index.php :

ini_set('display_errors',1);
require_once 'vendor/autoload.php';
$ChateauRepository = new \MonProjet\ChateauRepository();
$MillesimeRepository = new \MonProjet\MillesimeRepository();
$AppellationRepository = new \MonProjet\AppellationRepository();
$TypeRepository = new \MonProjet\TypeRepository();
$results = $ChateauRepository->findAll();
$allResults = $ChateauRepository->findAllElements();
$resultsmille = $MillesimeRepository->findAll();
$resultsappel = $AppellationRepository->findAll();
$resultstype = $TypeRepository->findAll();
$sortResult= [];

_ ChateauRepository.php :

namespace MonProjet;

class ChateauRepository{

private $connection;

public function __construct(){
$database = new \MonProjet\database();
$this->connection = $database->connect();

}

- - - Mise à jour - - -

Je précise que j'ai enlevé tous les espaces avant le namespace et même converti mon fichier en UTF8 sans BOM.