TCPDF ERROR: Some data has already been output, can't send P

Installation, utilisation, paramétrage de SMI sous Gnu/Linux
Répondre
pnps
Membre
Messages : 36
Enregistré le : jeu. juin 04, 2015 1:05 pm

TCPDF ERROR: Some data has already been output, can't send P

Message par pnps »

Bonjour,
Mon installation s'est bien déroulé.
J'ai toutefois un soucis pour la génération des PDF.

Ma configuration :
Un petit VPS de chez OVH : Parallels Plesk 12 on Ubuntu 14.04 (64 bits)
PHP : 5.4.41

Voici la configuration de mon fichier prm.inc.php

Code : Tout sélectionner

<?php
/****************************************************************************************
SMI (Services Maintenance Interventions) est une gestion libre de maintenance et de SAV

Version 1.0.1

Copyright (C) 2006-2012  Sylvain FATOME
This program is free software; you can redistribute it and/or modify it under the terms
of the GNU General Public License as published by the Free Software Foundation; 
either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; 
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program
(in the directory docs); 
if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 
Boston, MA  02110-1301, USA.

Contact : galawa@free.fr

Web : http://smitst.homelinux.com
****************************************************************************************/


// Vérification des tentatives de hack
$pos=strpos($_SERVER['PHP_SELF'],"inc.php");
if ($pos===FALSE)
	$ok_inc=TRUE;
else
	$ok_inc=FALSE;
if ($ok_inc==FALSE) header("Location: ../index.php");

//////////////////////////////////////////////////////////////////////////////////
/// Vous pouvez modifier ces variables en fonction de votre configuration      ///
//////////////////////////////////////////////////////////////////////////////////

/************************************************/
/**        Language de l'application           **/
/************************************************/

// Language par défaut de l'application (pris sur le browser)
$lng_appli = substr($_SERVER["HTTP_ACCEPT_LANGUAGE"],0,2);
	
/**************************************************/
/**        Répertoire de l'application           **/
/**************************************************/

define ("REP","");	// Répertoire de l'application

$rep_appli = $racine_web."/".REP;		// Chemin web absolu vers l'application
	
/*******************************************/
/**        Nom de la base MySQL           **/
/*******************************************/

define ("DBNAME","**********CONFIDENTIEL**********");     			// Nom de la base de données

/*************************************************************/
/**               Constantes des bases MySQL                **/
/*************************************************************/

// login/mot de passe Administrateur par défaut (créé la 1ère fois)

$admin_code = "**********CONFIDENTIEL**********";			// Code "Administrateur"
$admin_mdp = "**********CONFIDENTIEL**********";				// Mot de passe "Administrateur"


// Constantes de connexion à la base MySQL

define ("DBUSER","**********CONFIDENTIEL**********");       			// Utilisateur MySQL
define ("DBPASS","**********CONFIDENTIEL**********");       	// Mot de Passe pour MySQL
define ("DBHOST","**********CONFIDENTIEL**********");  		// Adresse IP du serveur MySQL


/****************************************************/
/**        Variables des téléchargements           **/
/****************************************************/

/*************************************************************/
/** Constantes et variables pour la gestion des icônes      **/
/** pour les statuts et des logos pour les agences,         **/
/** et les applications complémentaires                     **/
/*************************************************************/

// Constantes & Variables des répertoires pour les fichiers internes et téléchargés, et les sauvegardes

$url_gfc = $root."/";   
$url_tfc = "/"; 
$url_svg = $root."/";

																							
// Extensions autorisées
$extensions_ok = [".png",".zip",".pdf",".7z",".txt",".csv",".rtf",".wk1",".wks",".123",".iso",".xls",".doc",
".ods",".odt",".odg",".odp",".odb",".sxw",".sxi",".sti",".sxd",".gz",".tar",".gif",".rar",".arj",".jpg",".ppt",".exe",".jpg",
".gif",".bmp"];

// Tailles maximum (en octets) des fichiers pouvant être téléchargés
// (Pensez à contrôler votre PHP.INI)
$taille_maxi_admin = 1024*6000;
$taille_maxi_cge = 1024*6000;
$taille_maxi_age = 1024*3000;
$taille_maxi_tec = 1024*2000;

/*******************************************/
/**        Variables des icônes           **/
/*******************************************/

// Constantes & Variables des répertoires icônes et images

/***********[ TRES TRES IMPORTANT SOUS LINUX !!! ]***************/
/**                                                            **/
/** pensez à changer le propriétaire du répertoire des icônes  **/
/** en le passant sous le même propriétaire que celui qui      **/
/** exécute les scripts, sinon, rien ne s'affichera.           **/
/** Par exemple "chown wwwrun /srv/www/htdocs/maint/icones"    **/
/**                                                            **/
/****************************************************************/

$chemin_icones = "../icones";					// Chemin relatif vers les icônes
$url_logos = $rep_appli."/logos";				// Chemin complet vers le dossier de stockage des logos
$chemin_logos = "../logos";						// Chemin relatif vers les logos
$cheminr_logos = $root.REP."/logos";			// Chemin REEL vers les logos
$chemin_images = "../img";						// Chemin relatif vers les images

/*************************************************************/
/**        Constantes & Variables pour les emails           **/
/*************************************************************/

$admin_name = "**********CONFIDENTIEL**********";				// Nom de l'Administrateur
$admin_mail = "**********CONFIDENTIEL**********";			// Email de l'Administrateur

// Coordonnées du serveur smtp de votre FAI

$smtp_nom = "**********CONFIDENTIEL**********";			// Nom du serveur SMTP
										// Vous pouvez en donner plusieurs (séparez-les avec des ';')
$smtp_port = 25;						// Port du serveur SMTP
$smtp_login = "**********CONFIDENTIEL**********";						// Login du serveur SMTP (si serveur avec authentification...laisser vide si pas d'authentification)
$smtp_mdp = "**********CONFIDENTIEL**********";							// Mot de passe du serveur SMTP (si serveur avec authentification...laisser vide si pas d'authentification)
$smtp_pausem = 5;						// Pause en secondes entre chaque envoi de mail (emailings)
$smtp_secure = "SSL";						// Mode de sécurité SMTP ("ssl", "tls", ou rien)
										// SMI n'en tien compte que s'il y a un login
$pop_before = false;					// Si true, on fait un "POP before SMTP", sinon rien
$pop_nom = "";							// Non du serveur POP3 (SMI n'en tient compte que si "POP before STMP")
$pop_port = 110;						// Port du serveur POP3 (SMI n'en tient compte que si "POP before STMP")
$pop_timeout = 30;						// Time Out du serveur POP3 (SMI n'en tient compte que si "POP before STMP")
$pop_login = "";						// Login du serveur POP3 (SMI n'en tient compte que si "POP before STMP")
$pop_mdp = "";							// Mot de passe du serveur POP3 (SMI n'en tient compte que si "POP before STMP")


/***************************************************/
/**        Applications complémentaires           **/
/***************************************************/

$url_cal = "";									// Racine de l'application calendrier / agenda
$url_fac = "";									// Racine de l'application facturation
$url_facc = "";									// Racine de l'application facturation client
?>


Galawa
Site Admin
Messages : 1364
Enregistré le : jeu. févr. 22, 2007 11:26 am
Contact :

Re: TCPDF ERROR: Some data has already been output, can't se

Message par Galawa »

Bonjour,

Certaines configurations OVH ont, semble t'il, ce problème.

Nous sommes en train de voir ce qui peut bloquer, mais, ce qui est surprenant, c'est que les envois de PDF par mails (depuis la liste des interventions), fonctionnent...alors que c'est la même routine de génération.

Merci.

Galawa
Gestionnaire du projet SMI

pnps
Membre
Messages : 36
Enregistré le : jeu. juin 04, 2015 1:05 pm

Re: TCPDF ERROR: Some data has already been output, can't se

Message par pnps »

Merci pour votre réponse.
Pour info, j'ai testé la version Plesk avec une autre version de Linux, j'ai eu le même soucis.
En changeant les versions PHP (4.x, 5.x, 6.x) j'ai toujours le même problème.

J'ai voulu tester une version Plesk avec Windows Server, mais le module d'installation OVH est planté. Du coup je n'ai pas pu aboutir.

En quoi puis-je vous aider pour vous aider à solutionner ce problème ?
Merci.

Galawa
Site Admin
Messages : 1364
Enregistré le : jeu. févr. 22, 2007 11:26 am
Contact :

Re: TCPDF ERROR: Some data has already been output, can't se

Message par Galawa »

Bonjour,

Bizarrement, nous avons d'autres utilisateurs chez OVH, chez qui tout va bien ... :?

Et chez 1&1 ou encore maven hosting, aucun retour négatif.

Pour avancer, l'idéal serait d'avoir les logs d'exécution du serveur.

Merci.

Galawa
Gestionnaire du projet SMI

pnps
Membre
Messages : 36
Enregistré le : jeu. juin 04, 2015 1:05 pm

Re: TCPDF ERROR: Some data has already been output, can't se

Message par pnps »

Bonjour,

Je ne suis pas un expert pour retrouver les logs sur un serveur sous linux.
Si je vous fourni les accès root par message privé, cela peut-il vous aider ?

Je formaterai le serveur dans quelques jours, cela ne me gêne pas s'il faut vous fournir les accès root.
Merci.

pnps
Membre
Messages : 36
Enregistré le : jeu. juin 04, 2015 1:05 pm

Re: TCPDF ERROR: Some data has already been output, can't se

Message par pnps »

Bonjour,

Je ne suis pas un expert pour retrouver les logs sur un serveur sous linux.
Si je vous fourni les accès root par message privé, cela peut-il vous aider ?

Je formaterai le serveur dans quelques jours, cela ne me gêne pas s'il faut vous fournir les accès root.
Merci.

Galawa
Site Admin
Messages : 1364
Enregistré le : jeu. févr. 22, 2007 11:26 am
Contact :

Re: TCPDF ERROR: Some data has already been output, can't se

Message par Galawa »

Bonjour,

Il me faut un peu de temps (je travaille en dehors du projet SMI et je n'ai donc pas 100% de mon temps disponible).

Mais, bien évidemment, vous pouvez me contacter en MP.

Merci.

Galawa
Gestionnaire du projet SMI

Marc NANTES
Nouveau membre
Messages : 8
Enregistré le : jeu. juin 11, 2015 6:49 pm

Re: TCPDF ERROR: Some data has already been output, can't se

Message par Marc NANTES »

Bonjour Galawa et a tous,
Herbergeur : 1and1
PHP : 5.4

emplacement de l'erreur : /smi/admin/int_enr.php
imprimer

- résultat

Warning: Cannot modify header information - headers already sent by (output started at /homepages/46/d380623483/htdocs/interv/smi/inc/prm.inc.php:1) in /homepages/46/d380623483/htdocs/interv/smi/classes/tcpdf/tcpdf.php on line 7671
TCPDF ERROR: Some data has already been output to browser, can't send PDF file

Juste pour information sans logo le chemin est différent : /homepages/46/d380623483/htdocs/interv/smi/inc/
Ma racine est /kunden/homepages/46/d380623483/htdocs/interv

Merci pour votre aide précieuse.
Cordialement,
Marc

Marc NANTES
Nouveau membre
Messages : 8
Enregistré le : jeu. juin 11, 2015 6:49 pm

Re: TCPDF ERROR: Some data has already been output, can't se

Message par Marc NANTES »

:D bonjour a tous je viens de découvrir l'erreur !
Bonjour Galawa, Je me permet de mettre une solution sous ton contrôle bien sure.

Il s'agissait bien du fichier prm.inc.php qui a été mis en UTF8 AVEC BOM automatiquement par votre éditeur. Je l'ai passé en mode sans BOM (ça a retiré des caractères invisibles en tête de fichier.
Or ceci est incompatible avec certains hébergements, c'est lié au mode de fonctionnement de PHP et non de PEEL.

Pour résoudre ce problème je vous conseil de prendre Notepad++
Ouvrir votre fichier puis menu encodage convertir en UT8 (sans BOM)
Puis enregistrer et le remettre sur votre FTP

Merci a tous

pnps
Membre
Messages : 36
Enregistré le : jeu. juin 04, 2015 1:05 pm

Re: TCPDF ERROR: Some data has already been output, can't se

Message par pnps »

BINGO Marc, tu es un killer.
Sa marche chez moi.

Bravo !
Merci.

Galawa
Site Admin
Messages : 1364
Enregistré le : jeu. févr. 22, 2007 11:26 am
Contact :

Re: TCPDF ERROR: Some data has already been output, can't se

Message par Galawa »

Bonjour,

Merci pour ce retour.

Ce qui est étonnant c'est que nous avons près de 30 utilisateurs sous contrat qui ont été mis à jour récemment avec la version 1.0.2...chez 1&1 et qu'aucun n'a eu le problème.

Les retours problématique étaient essentiellement sur des utilisateurs hébergés chez OVH.

Entre temps, nous avons modifié la routine de génération des PDF, pour qu'elle crée le fichier en local, sur le serveur, avant de l'envoyer, par des headers, au navigateur...et ça semble fonctionner chez ces utilisateurs qui avaient le souci.

J'ai aussi ouvert le prm.inc.php sur lequel nous travaillons en développement : il est en UTF-8 sans BOM (?)

J'en ai contrôlé d'autres au hasard : il sont tous en UTF-8 sans BOM.

Du coup, j'ai ouvert celui qui a été fourni avec le zip 1.0.1 : il est en UTF-8 avec BOM (!)

Je vérifierai donc 2 fois le zip avant de fournir la version 1.0.2 (qui devrait sortir demain).

Encore merci pour ce retour.

Galawa

Bref, il y a eu un problème à la compilation du zip...
Gestionnaire du projet SMI

Répondre