chemin des fichiers

grisbigrisbi Member
mars 2016 modifié dans Entraide
Bonjour

je rencontre un petit probleme :

Pour cette ligne j'ai une erreur :failed to open stream: "No such file or directory in..."
pourtant mon chemin me semble correct
par contre ça fonctionne si je met le chemin entier depuis "http://";

[== PHP ==]
$source = imagecreatefromjpeg("data/test/image.jpg");

merci

a+

Réponses

  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    mars 2016 modifié
    Certainement :
    [== PHP ==]
    $source = imagecreatefromjpeg(PLX_ROOT.'data/test/image.jpg');
    

    Mais si tu as utilisé le gestionnaire de medias de Pluxml, ce sera plutôt cela :
    [== PHP ==]
    # côté back-office
    $source = imagecreatefromjpeg(PLX_ROOT.$plxAdmin->aConf['medias'].'test/image.jpg');
    # côté front-end
    $source = imagecreatefromjpeg(PLX_ROOT.$plxMotor->aConf['medias'].'test/image.jpg');
    
  • grisbigrisbi Member
    Je n'utilise pas le gestionnaire de médias .

    Je pense qu'il faut declarer la constante PLX_ROOT comme ceci ?
    [== PHP ==]
    <?php if(!defined('PLX_ROOT')) exit; ?>
    
  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    mars 2016 modifié
    Pour savoir où est défini PLX_ROOT, tu peux utiliser l'utilitaire grep en ligne de commande, en te plaçant à la racine du site :
    [== Indéfini ==]
    grep "define('PLX_ROOT" core/admin/*.php
    grep "define('PLX_ROOT" core/lib/*.php
    grep "define('PLX_ROOT" *.php
    
  • grisbigrisbi Member
    mars 2016 modifié
    j'ai declaré la constante comme ceci et toujours le même problème
    [== PHP ==]
    <?php define('PLX_ROOT', './' )?>
    
    
    
    

    sachant que pour mon test je suis en local soit http://localhost/pluxml/

    et si je déclare ma constante comme ceci :
    [== PHP ==]
    <?php define('PLX_ROOT', 'http://localhost/pluxml/' )?>
    

    ça marche !

    là je comprends plus ...
  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    mars 2016 modifié
    PLX_ROOT est une constante définie par Pluxml.
    Si tu ne veux pas avoir trop de souci, il vaut mieux ne pas y toucher.
    De plus, il y a un souci avec PLX_ROOT, c'est qu'elle est utilisée à la fois pour déterminer le chemin des fichiers et pour calculer les URLs dans les pages HTML
    Il faut utiliser cela :
    [== PHP ==]
    $source = imagecreatefromjpeg(PLX_ROOT.'data/test/image.jpg');
    
  • StéphaneStéphane Member, Former PluXml Project Manager
    PLX_ROOT est une constante donc il n'est pas possible de redefinir sa valeur. PHP l'interdit (sinon ce n'est plus une constante mais une variable)

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • StéphaneStéphane Member, Former PluXml Project Manager
    @grisbi: à partir d'où dans PluXml tu veux utiliser ton code (fichier du theme ?)
    $source = imagecreatefromjpeg("data/test/image.jpg");
    

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • grisbigrisbi Member
    mars 2016 modifié
    C'est pour utiliser dans la partie admin

    Plus exactement le fichier config du plugin et cette ligne est
    dans la partie du code pour le redimensionnement d'images

    Je voudrais surtout utiliser au mieux les mécanismes et fonctions internes a pluxml
    au lieu du PHP pur, ceci pour la coherence de l'ensemble, si tu vois ce que je veux dire

    Je ne comprends toujours pas pourquoi ça fonctionne si je met le chemin entier


    a+
  • StéphaneStéphane Member, Former PluXml Project Manager
    à utiliser dans le fichier config.php de ton plugin
    <?php
    $source = imagecreatefromjpeg($plxAdmin->aConf['medias'].'test/image.jpg');
    ?>
    

    ça sous-entend que ton image est dans data/medias/test/

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    mars 2016 modifié
    Code à utiliser dans config.php ou monplugin.php :
    [== PHP ==]
    $filesRoot = substr(dirname(__FILE__).'/', 0, -strlen($plxAdmin->aConf['racine_plugins']));
    $source = imagecreatefromjpeg($filesRoot.$plxAdmin->aConf['medias'].'test/image.jpg');
    

    @Stephane,
    C'est l'inconvénient d'avoir une adresse relative dans PLX_ROOT ;)
  • grisbigrisbi Member
    mars 2016 modifié
    Vos deux codes fonctionnent

    maintenant comme je vous ai dit pour creer mon image enregistrée j'avais fait au depart
    [== PHP ==]
    imagejpeg($destination, ' medias/test/S_image.jpg'); /*enregistrement de l'image redimensionnée */
    
    :

    Pour l'enregistrement de l'image j'ai fait çà :
    [== PHP ==]
    imagejpeg($destination, '$plxAdmin->aConf['medias'].'test/S_image.jpg ');
    

    et ça marche pas

    a+
  • StéphaneStéphane Member, Former PluXml Project Manager
    attention aux quotes

    imagejpeg($destination, $plxAdmin->aConf.'test/S_image.jpg');

    pas de quote devant $plxAdmin
    et pas d'espace apres jpg

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    Si c'est pour ouvrir une image, la transformer et sauvegarder le résultat dans le même dossier, autant mémoriser l'adresse du dossier dans une variable :
    [== PHP ==]
    $filesRoot = substr(dirname(__FILE__).'/', 0, -strlen($plxAdmin->aConf['racine_plugins']));
    $monDossier = $filesRoot.'test/';
    $source = imagecreatefromjpeg($monDossier.'image.jpg');
    # ..............
    imagejpeg($destination, $monDossier.'S_image.jpg'); /*enregistrement de l'image redimensionnée */
    
    Note qu'avec Pluxml, les noms de dossiers finissent pas '/'.
  • grisbigrisbi Member
    @bazooka
    ça ne marche toujours pas

    j'ai fais ceci pour m'assurer que le fichier source existe :
    [== PHP ==]
    $filesRoot = substr(dirname(__FILE__).'/', 0, -strlen($plxAdmin->aConf['racine_plugins']));
    $monDossier = $filesRoot.'test/';
    $source = imagecreatefromjpeg($monDossier.'image.jpg');
    
    if (file_exists($source)) {
    	echo "Le fichier $source existe.";
    } else {
    	echo "Le fichier $source n'existe pas.";
    }
    

    et j'ai la reponse le "fichier n'existe pas"

    a+
  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    Remplace dirname(__FILE__).'/' par PLX_ROOT

    Le fichier php où tu écris ces lignes est dans qul dossier ?
  • grisbigrisbi Member
    mars 2016 modifié
    le fichier ou j'ecris ces lignes est dans plugins/MonPlugin

    c'est ce dossier qui contiendra le plugin qui est en construction
    pour l'instant je realise des tests
  • grisbigrisbi Member
    mars 2016 modifié
    j'ai refais un essai a l'instant

    si mon fichier php est dans le dossier /plugins/MonPlugin/fichier.php
    le dossier data/test n'est pas trouvé

    si je deplace mon script dans plugins/fichier.php donc si je descends
    d'un niveau de l'arborescence le dossier et mon fichier est trouvé

    A+
  • StéphaneStéphane Member, Former PluXml Project Manager
    imagejpeg($destination, PLX_ROOT.$plxAdmin->aConf['medias'].'test/S_image.jpg ');
    

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • grisbigrisbi Member
    mars 2016 modifié
    @Stephane

    l'image source est dans /data/test/image.jpg

    le probleme c'est qu'en lancant mon script php qui est dans plugins/MonPlugin il ne trouve pas le
    dossier source de l'image . Mais si je mets le fichier du script php directement dans le dossier plugins il le trouve
    c'est ça que je ne comprends pas

    a+
  • StéphaneStéphane Member, Former PluXml Project Manager
    forcement puisque $plxAdmin->aConf fait référence à data/medias
    déplace ton dossier test dans medias et ça sera tout bon.

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

Connectez-vous ou Inscrivez-vous pour répondre.