Php-curl : recuperation code source site web

Résolu
frederic987 Messages postés 6 Statut Membre -  
Reivax962 Messages postés 3742 Statut Membre -
Bonjour,

J'essaie de mettre en place le bout de script trouve ici : https://forums.commentcamarche.net/forum/affich-2266318-php-recuperer-le-code-source-d-une-page-web

<?php

$ch = curl_init();
$timeout = 5; // set to zero for no timeout
curl_setopt ($ch, CURLOPT_URL, 'http://www.commentcamarche.net');
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);
$lines = array();
$lines = explode("\n", $file_contents);

// display file line by line
foreach($lines as $line_num => $line) {
echo "Line # {$line_num} : ".htmlspecialchars($line)."<br />\n";
}

?> 


Il marche bien tant que l'url est externe, mais impossible de le faire fonctionner en local (sur un site local). Est ce que quelqu'un aurait une idee sur ce qui pourrait l'en empecher ? configuration php.ini ? apache ?

Merci

6 réponses

  1. frederic987 Messages postés 6 Statut Membre 1
     
    Conclusion : c'etait bien la configuration SSL d'apache qui pechait. Toujours pas de nouvelle configuration permettant une utilisation normale neanmoins.
    1
    1. Reivax962 Messages postés 3742 Statut Membre 1 011
       
      Merci pour le retour :)
      0
  2. Reivax962 Messages postés 3742 Statut Membre 1 011
     
    Bonjour,

    Tu peux nous montrer comment tu fais ton appel sur un site local ? A priori il n'y a pas de raisons pour que le comportement soit différent...

    Xavier
    0
  3. frederic987 Messages postés 6 Statut Membre 1
     
    Bonjour

    J'ai decouvert depuis que ce comportement etait du a une mauvaise configuration d'apache2. Tous mes sites locaux sont en https et la configuration de rewrite semble inappropriee, puisque en desactivant ssl et le renvoi vers 443 : ca marche.

    Voici la configuration du vhost :

    NameVirtualHost 192.168.0.15:80 
    <VirtualHost 192.168.0.15:80> 
    
            DocumentRoot            /var/www/www.local.try 
         
            ServerName              www.local.try 
            ServerAlias             local.try *.local.try 
            ServerAdmin             admin@localhost 
             
            # Directory directives 
            <Directory /var/www/www.local.try> 
                Options             None 
                AllowOverride       None 
                Order               deny,allow 
                Allow from          10.0.1.2 10.0.1.3 10.0.1.4 10.0.1.5 
            </Directory> 
             
             
            # PHP directives 
            php_flag                display_errors 0 
    
            # SSL Engine Switch: 
            SSLEngine               Off 
    
    
            # Log files 
            ErrorLog                /var/log/apache2/www.local.try-error.log 
            CustomLog               /var/log/apache2/www.local.try-access.log vhost_combined 
             
            # Possible values include: debug, info, notice, warn, error, crit, 
            # alert, emerg. 
            LogLevel                info 
    
    
            # Redirect http to https 
            RewriteEngine           On 
            RewriteOptions          Inherit 
    
            RewriteLog /var/log/apache2/https_rewrite.log 
            RewriteLogLevel 1 
             
            RewriteCond %{SERVER_PORT} !^443$ 
            RewriteRule ^/(.*) https://%{SERVER_NAME}/ [L,R] 
    </VirtualHost> 
    
    NameVirtualHost 192.168.0.15:443 
    <VirtualHost 192.168.0.15:443> 
    
            DocumentRoot            /var/www/www.local.try 
         
            ServerName              www.local.try 
            ServerAlias             local.try *.local.try 
            ServerAdmin             admin@localhost 
             
            # Directory directives 
            <Directory /var/www/www.local.try> 
                Options             None 
                AllowOverride       None 
                Order               deny,allow 
                Allow from          10.0.1.2 10.0.1.3 10.0.1.4 10.0.1.5 
            </Directory> 
             
             
            # PHP directives 
            php_flag                display_errors 0 
    
            # SSL Engine Switch: 
            SSLEngine               On 
            SSLProtocol             all -SSLv2 
    
            #   Client Authentication (Type): 
            SSLCertificateFile      /home/mrman/.ssl/certs/local-cert.pem 
            SSLCertificateKeyFile   /home/mrman/.ssl/private/local-key.pem 
             
            # Log files 
            ErrorLog                /var/log/apache2/www.local.try-error.log 
            CustomLog               /var/log/apache2/www.local.try-access.log vhost_combined 
             
            # Possible values include: debug, info, notice, warn, error, crit, 
            # alert, emerg. 
            LogLevel                info 
    </VirtualHost>


    Car ayant fait le test sur des serveurs externes https, ca marche.

    Pour l'appel sur site local, je remplace juste par l'url local : http(s)://site.local

    Merci de ton aide.
    0
    1. Reivax962 Messages postés 3742 Statut Membre 1 011
       
      Ah, désolé, mais là ça va être un peu trop complexe pour que je t'aide sans passer trois heures à réviser mon apache, surtout avec SSL que je n'ai jamais utilisé...
      Essaie éventuellement en forçant le port dans ton URL locale ?
      0
  4. frederic987 Messages postés 6 Statut Membre 1
     
    Non mais merci quand meme. ;)
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. mpmp93 Messages postés 2931 Date d'inscription   Statut Membre Dernière intervention   1 343
     
    Bonjour,

    Pourquoi utiliser CURL????

    Y a en php l'instruction file_get_contents qui fonctionne très bien sur un URL:

    $monFichier = file_get_contents('http://www.commentcamarche.net');

    echo $monFichier;

    Si l'URL contient des caractères spéciaux, penser à encoder l'URL avec urlencode()

    A+
    0
  7. frederic987 Messages postés 6 Statut Membre 1
     
    Bonjour mpmp93

    file-get-contents fait partie des fonctions comme fopen qui sont desactiver sur le serveur ou le script doit s'executer. ;)
    0