Php-curl : recuperation code source site web
Résolu
frederic987
Messages postés
6
Statut
Membre
-
Reivax962 Messages postés 3742 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
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
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
-
Conclusion : c'etait bien la configuration SSL d'apache qui pechait. Toujours pas de nouvelle configuration permettant une utilisation normale neanmoins.
-
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 -
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. -
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
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+
-
Bonjour mpmp93
file-get-contents fait partie des fonctions comme fopen qui sont desactiver sur le serveur ou le script doit s'executer. ;)