IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

cURL en ligne de commande avec du PHP


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 481
    Par défaut cURL en ligne de commande avec du PHP
    Bonjour,

    Je souhaite lancer un script PHP à partir de cURL lancé depuis une ligne de commande sous Windows (7).

    J'ai bien intégré la ligne dans la PHP.INI :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    extension=php_curl.dll
    Je le lance de la manière suivante (ligne de commande de windows) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    C:\wamp\www\PhpMarc>curl http://update2.php
    curl: (6) Could not resolve host: update2.php
    Pour information, mon script PHP (update2.php) fait une copie d'un fichier d'un répertoire vers un autre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Simple PHP Form Demo</title>
    </head>
    	<body>
     
    		<form id="contact_form" method="post" action=".">
     
     
    			<?php           
     
    			//	echo "Fichier à écrire : ".$cible;
     
    				$fichier="C:\\Users\\Public\\Pictures\\Sample Pictures\\Koala.jpg"
     
    				if ($_FILES['fichier']['error']) {     
    					switch ($_FILES['fichier']['error']){     
    					   case 1: // UPLOAD_ERR_INI_SIZE     
    						   echo"Le fichier dépasse la limite autorisée par le serveur (fichier php.ini) !";     
    						   break;     
    					   case 2: // UPLOAD_ERR_FORM_SIZE     
    						   echo "Le fichier dépasse la limite autorisée dans le formulaire HTML !"; 
    						   break;     
    					   case 3: // UPLOAD_ERR_PARTIAL     
    						   echo "L'envoi du fichier a été interrompu pendant le transfert !";     
    						   break;     
    					   case 4: // UPLOAD_ERR_NO_FILE     
    						   echo "Le fichier que vous avez envoyé a une taille nulle !"; 
    						   break;     
    					  }     
    				}     
    				else {     
    					 // $_FILES['nom_du_fichier']['error'] vaut 0 soit UPLOAD_ERR_OK     
    					 // ce qui signifie qu'il n'y a eu aucune erreur   
    					 $cible="c:\\tmp\\test.jpg";
    					print  $_FILES['fichier']['name']."</br>";
    					print  $_FILES['fichier']['size']."</br>";
    					print  $_FILES['fichier']['type']."</br>";
    					print  $_FILES['fichier']['tmp_name']."</br>";
     
    					$source=$_FILES['fichier']['tmp_name'];
    					if (!copy($source, $cible)) {
    						echo "ERREUR : La copie du fichier ".$cible." a échoué...\n";
    					}
     
     
    					 copy($_FILES['fichier']['tmp_name'],$cible);
    					 echo "La copie du fichier ".$cible." a réussi...\n";
     
     
    				}     
    			?>
    		</form>
     
    	</body>
    </html>
    Pourriez vous s'il vous plaît me dire ce qui cloche ?

    Par avance merci.

    Marco.

  2. #2
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 324
    Par défaut
    Bonjour,

    ai jamais vu d'url de la forme : http://update2.php
    mais plutot sous

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://mondedomaine.com/dossier/update2.php
    et pour info le "script" ne fait rien

    $fichier="C:\\Users\\Public\\Pictures\\Sample Pictures\\Koala.jpg"
    mais c'est $_FILES qui est utilisé pas $fichier

    il faut bien sur enlever tous les affichages html en mode cli !

    et pourquoi vouloir utiliser curl ????

    il est plus facile de faite un php update2.php

  3. #3
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Si le but est de lancer en ligne de commande un script local , il ne faut pas utiliser curl mais php.

    Si php est dans ton PATH ca donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    php /chemin/vers/update2.php
    Si le script est sur un autr eserveur accessible uniquement via le web , curl peut se justifier mais comme dis précédemment il faut alors une url qui ressemble à une url
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 481
    Par défaut
    Bonjour et merci pour vos réponses,

    Si le script est sur un autr eserveur accessible uniquement via le web , curl peut se justifier mais comme dis précédemment il faut alors une url qui ressemble à une url
    En fait c'est exactement ça et en plus bon ici c'est juste un exemple car à la place de copier un image, je vais copier un fichier CSV et insérer son contenu dans une table MySQL.

    Du coup ma commande en ligne de commande est plutôt du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\wamp\www\PhpMarc>curl http://localhost/PhpMarc/upload2.php
    Mais j'ai toujours une erreur :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <br />
    <font size='1'><table class='xdebug-error xe-parse-error' dir='ltr' border='1' c
    ellspacing='0' cellpadding='1'>
    <tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color
    : #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Parse error: syntax
     error, unexpected 'if' (T_IF) in C:\wamp\www\PhpMarc\upload2.php on line <i>18<
    /i></th></tr>
    </table></font>

    Par avance merci et bon appétit.

    Marco.

  5. #5
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 324
    Par défaut
    Parse error: syntax error, unexpected 'if' (T_IF) in C:\wamp\www\PhpMarc\upload2.php on line <i>18
    pas clair ? il manque un ";" (et il donne la ligne !)

    la premiere chose a faire, c'est de lancer directement le script.

    Mais ca ne changera rien , car comme dit + haut ce script ne fait rien, cette ligne 18, n'a aucune action dans ce script !

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 481
    Par défaut
    Tu as raison je n'ai pas pris le bon script.

    Pour l'instant il y a un script avec un formulaire qui en lance un second :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
     <head>
      <title>Formulaire d'upload</title>
     </head>
     <body>
      <form method="post" enctype="multipart/form-data" action="upload.php">
       <p>
        <label>S&eacute;lectionnez un r&eacute;pertoire :
        <-- <input type="dirname" name="repertoire" /> -->
    	<input type="file" name="fichier" />
        </label>
       </p>
       <p><input type="submit" value="Envoyer" /></p>
      </form>
     </body>
    </html>

    Et le script appelé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    <?php           
     
    //	echo "Fichier à écrire : ".$cible;
     
    	if ($_FILES['fichier']['error']) {     
    		  switch ($_FILES['fichier']['error']){     
    			   case 1: // UPLOAD_ERR_INI_SIZE     
    				   echo"Le fichier dépasse la limite autorisée par le serveur (fichier php.ini) !";     
    				   break;     
    			   case 2: // UPLOAD_ERR_FORM_SIZE     
    				   echo "Le fichier dépasse la limite autorisée dans le formulaire HTML !"; 
    				   break;     
    			   case 3: // UPLOAD_ERR_PARTIAL     
    				   echo "L'envoi du fichier a été interrompu pendant le transfert !";     
    				   break;     
    			   case 4: // UPLOAD_ERR_NO_FILE     
    				   echo "Le fichier que vous avez envoyé a une taille nulle !"; 
    				   break;     
    		  }     
    	}     
    	else {     
    		 // $_FILES['nom_du_fichier']['error'] vaut 0 soit UPLOAD_ERR_OK     
    		 // ce qui signifie qu'il n'y a eu aucune erreur   
    		 $cible="c:\\tmp\\test.jpg";
    		print  $_FILES['fichier']['name']."</br>";
    		print  $_FILES['fichier']['size']."</br>";
    		print  $_FILES['fichier']['type']."</br>";
    		print  $_FILES['fichier']['tmp_name']."</br>";
     
    		$source=$_FILES['fichier']['tmp_name'];
    		if (!copy($source, $cible)) {
    			echo "ERREUR : La copie du fichier ".$cible." a échoué...\n";
    		}
     
     
    		 copy($_FILES['fichier']['tmp_name'],$cible);
    		 echo "La copie du fichier ".$cible." a réussi...\n";
     
     
    	}     
    ?>
    Celui ci fonctionne, je l'ai testé.

    Lorsque je lance avec cURL,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\wamp\www\PhpMarc>curl http://localhost/PhpMarc/FormulaireSelectionneRepertoire.php
    Le résultat est le suivant

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <?xml version="1.0" encoding="UTF-8"?>
    ´╗┐<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/T
    R/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
     <head>
      <title>Formulaire d'upload</title>
     </head>
     <body>
      <form method="post" enctype="multipart/form-data" action="upload.php">
       <p>
        <label>S&eacute;lectionnez un r&eacute;pertoire :
        <-- <input type="dirname" name="repertoire" /> -->
            <input type="file" name="fichier" />
        </label>
       </p>
       <p><input type="submit" value="Envoyer" /></p>
      </form>
     </body>
    </html>

    Il m'affiche le contenu du script au lieu de l'exécuter...

    A plus tard.

    Marco.

Discussions similaires

  1. Utiliser des outils en ligne de commande avec PHP
    Par Thes32 dans le forum Langage
    Réponses: 0
    Dernier message: 19/01/2010, 11h25
  2. Utiliser des outils en ligne de commande avec PHP
    Par Thes32 dans le forum Langage
    Réponses: 5
    Dernier message: 24/11/2009, 19h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo