problème de synthaxe

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 : problème de synthaxe

Re: problème de synthaxe

par ynx » 08 juin 2023, 12:38

Il ne faut pas confondre le chemin sur le système de fichier et l'URL via Apache.

Dans la configuration de ton virtual host apache, le DocumentRoot est défini sur le dossier c:\code\projet_image donc la racine de ton site web pointe sur ce dossier.
Autrement dit, lorsque le visiteur charge l'URL http://testcours/images/bg.jpg Apache va chercher le fichier c:\code\projet_image\images\bg.jpg
Ceci dépend de la configuration de ton vhost.
https://httpd.apache.org/docs/2.4/fr/urlmapping.html

Tu indiques que l'URL http://tescours/images/bg.jpg fonctionne mais que l'URL http://tescours/images/bg.JPG ne fonctionne pas.
Je ne comprends pas pourquoi l'extension JPG est en majuscule avec ton code PHP, le fichier est image.jpg ou image.JPG (utilise si possible des minuscules partout pour éviter les ambiguïtés) ?

Re: problème de synthaxe

par elevedavid » 07 juin 2023, 21:43

pourquoi
http://testcours/projet_image/images/bg.jpg ne fonction pas

et que

http://tescours/images/bg.jpg fonction

pourquoi il ne faut pas le chemin complet ?
j'ai modifié mon code pour avoir l'url qui fonction et ça ne fonctionne toujours pas??
<?php echo IMAGE_DIR_URL.$image; ?>
résultat :
http://testcours/images/bg.JPG donc cela devrait fonctionné et ça ne fonctionne pas??

Re: problème de synthaxe

par elevedavid » 07 juin 2023, 21:27

pour moi les chemins sont bons

quand je fais :
<!--tableau des constantes-->
<?php $constants = get_defined_constants(true);
print_r($constants['user']);
?>
le résultat est le suivant :
Array ( [WEB_DIR_NAME] => projet_image [IMAGE_DIR_NAME] => images [IMAGE_DIR_PATH] => C:/code/projet_image/images/ [IMAGE_DIR_URL] => http://testcours/projet_image/images/ )

Re: problème de synthaxe

par elevedavid » 07 juin 2023, 20:51

voici la configuration de serveur virtuel testcours

#
<VirtualHost *:80>
ServerName testcours
DocumentRoot "c:/code/projet_image"
<Directory "c:/code/projet_image/">
Options +Indexes +Includes +FollowSymLinks +MultiViews
AllowOverride All
Require local
</Directory>
</VirtualHost>
#

Re: problème de synthaxe

par or 1 » 06 juin 2023, 23:29

voir la configuration d'apache pour voir où mène http://testcours/
c'est ensuite pour rapport à ce répertoire qu'il faut construire le chemin.

et
<li><img scr="<?php echo "images/" . $image; ?>"></li>

va fonctionner aussi, et à l'avantage de ne pas nécessiter de changement le jour où le site passe en https

quelque chose à tester pour bien comprendre, c'est de changer la configuration d'apache pour pointer vers c:\code

Re: problème de synthaxe

par elevedavid » 06 juin 2023, 22:22

donc pour moi mon erreur est sur la première partie de mon code sur les constantes define !!
<?php
//nom du dossier principal
define('WEB_DIR_NAME', 'projet_image');
//nom du dossier contenant les images et qui est donc le sous-dossier du répertoire principal
define('IMAGE_DIR_NAME', 'images');
//le chemin (path) complet du répertoire images
define('IMAGE_DIR_PATH', $_SERVER['DOCUMENT_ROOT'] . '/' . IMAGE_DIR_NAME . '/');
//l'URL du répertoire images
define('IMAGE_DIR_URL', 'http://' . $_SERVER['HTTP_HOST'] . '/' . WEB_DIR_NAME . '/' . IMAGE_DIR_NAME . '/');

class Image {
    //retourne les fichiers présent dans le répertoire $directory
    public function getImages($directory){
        //ouverture du répertoire
        if ($handel = opendir($directory)){
            //création d'un tableau vide $images pour récupérer les fichiers
            $images = [];
            //pour chaque entrée dans le répertoire
            while(false !==($entry = readdir($handel))){
                //vérification qu'il s'agit d'un fichier
                if ($entry != '.' AND $entry != '..'){
                    //ajout du nom du fichier au tableau $images
                    $images [] = $entry;
                }
            }            
        }
        //fermeture du répertoire
        closedir($handel);
        //retour tableau des fichiers du répertoire $directory
        return $images;
    }
}
?>

<!DOCTYPE html>
<html lang="fr">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>

<?php
$image = new Image();
//récupération tableau des noms de fichier présents dans le répertoire
$images = $image->getImages(IMAGE_DIR_PATH);
?>
<!--affichage des photos-->
<ul>
<?php foreach($images as $image): ?>
    <li><img scr="<?php echo IMAGE_DIR_URL . $image; ?>"></li>
<?php endforeach; ?> 
</ul> 


</body>
</html>

Re: problème de synthaxe

par elevedavid » 06 juin 2023, 21:37

petit rectificatif si je tape l'url http://testcours/images/une-image.jpg fonctionne bien mais si je fais : http://testcours/projet_images/images/une-image.jpg cela ne fonctionne pas. Pourquoi il ne faut pas mettre le chemin complet pour accéder au répertoire images?

conclusion j'ai bien une erreur dans mon code?

Re: problème de synthaxe

par elevedavid » 06 juin 2023, 21:27

j'ai tapé l'URL dans le navigateur et voici le message d'erreur qui apparait sur la page :

Not Found
The requested URL was not found on this server.

Apache/2.4.54 (Win64) PHP/8.0.26 mod_fcgid/2.3.10-dev Server at testcours Port 80

Re: problème de synthaxe

par ynx » 06 juin 2023, 13:20

Tu indiques que ton fichier index.php se trouve dans le dossier c:\code\projet_image
et pour accéder à ce fichier dans le navigateur tu saisis l'url http://testcours/index.php (ou http://testcours/ qui est équivalent).

Tes images sont dans le dossier c:\code\projet_image\images
donc pour accéder à une image dans le navigateur, l'url devrait être http://testcours/images/une-image.jpg

Commence par vérifier que tes images sont bien accessibles depuis ton navigateur.
Est-ce que l'url http://testcours/images/une-image.jpg fonctionne dans ton navigateur (avec un vrai nom d'image à la place de une-image.jpg) ?
Dans le cas contraire, quelle url dois-tu saisir dans le navigateur pour afficher une image ?

Re: problème de synthaxe

par elevedavid » 05 juin 2023, 23:25

j'essayerai à nouveau demain soir mais là je commence à trouver le temps long....
je ne vois vraiment pas ce qui peut planter.
bonne soirée

Re: problème de synthaxe

par elevedavid » 05 juin 2023, 23:22

dans le code source de la page les url semble bonne voir message : 31 mai 22h15
il y a que là que j'arrive a voir des urls !!
ou je passe à coté de quelque chose qui est très gros !!

Re: problème de synthaxe

par elevedavid » 05 juin 2023, 22:26

je dois chercher où?? car la je ne vois vraiment pas :(

Re: problème de synthaxe

par or 1 » 05 juin 2023, 22:15

effectivement
dans la console, il doit au moins y avoir l'appel réussi du fichier php à l'url http://testcours/ et une fois cela touvé, il doit y avoir les appels des images en 404.

Re: problème de synthaxe

par elevedavid » 05 juin 2023, 22:12

j'ai l'impression que ce n'est pas un problème de code mais un problème de configuration de quelque chose.

Re: problème de synthaxe

par elevedavid » 05 juin 2023, 22:11

avec chrome :

Failed to load resource: the server responded with a status of 404 (Not Found)

Pas trouvé
L'URL demandée est introuvable sur ce serveur.

Apache/2.4.54 (Win64) PHP/8.0.26 mod_fcgid/2.3.10-dev Serveur chez testcours Port 80