OVH Community, votre nouvel espace communautaire.

Script PHP en CLI sur un hébergement mutualisé


Anybody-Fr
11/03/2015, 11h24
La fonction FTP fonctionne bien puisque j'arrive à me connecter (ftp_connect, ftp_login), à récupérer la taille du fichier distant (ftp_size) et même à renommer le fichier (ftp_rename)...

Mais pourquoi les fonctions ftp_get et ftp_put ne fonctionnent pas ???

Anybody-Fr
09/03/2015, 20h28
Oui, le script est sur l'hébergement mutualisé et le but est donc de se connecter à une FTP distant pour y récupérer des fichiers...
et aussi l'inverse, transférer des fichiers depuis mon espace mutualisé vers ce FTP...

Un fonctionnement FTP classique...

Rizz
09/03/2015, 19h56
Erreur mystère .. bof...

Est ce que tu essaies bien de te connecter depuis le mutu vers un ftp distant ? Le contraire fonctionne très certainement mais ça ....

Anybody-Fr
09/03/2015, 19h30
Bonjour,

Je suis enfin arrivé à faire fonctionner le script PHP en CLI.
Et à le faire exécuter régulièrement avec un Cron.

Mais ça ne réglait pas le problème de pouvoir lancer le script pour faire des tests sans avoir à attendre 1h que le Cron l’exécute...

Donc je passe par un "exec" depuis un script appelé par le site :
exec('php.ORIG.5_3 /home/xxxx/site/cli/testovh.php', $output, $return_var);

Donc pour le PHP en CLI, c'est bon...


Mais j'ai maintenant une autre erreur mystère sur cette hébergement mutualisé ?

En effet, avec mon script PHP j'arrive bien à me connecter par FTP (en utilisant le mode passif) mais impossible de récupérer ou déposer un fichier par FTP.
J'ai une erreur avec l'utilisation des fonctions PHP "ftp_get" et "ftp_put".

A priori, ce n'est pas un problème de droit, car si je me connecte avec mon logiciel de FTP j'arrive sans problème à y déposer ou récupérer ces fichiers.

Et pire, si j'utilise exactement ce même script depuis un de nos serveurs dédiés, la récupération et le dépôt de fichier par FTP fonctionne parfaitement...

Donc, y a t il une subtilité pour faire du FTP en PHP dans cette environnement mutualisé ???

Mon script de test :
Code PHP:
$conn_id ftp_connect($host);
ftp_pasv($conn_idtrue);

// Login
if( ftp_login($conn_id$login$pwd) ){
    
    echo 
"FTP > Login \n";
    
    
// Put
    
$local_file __DIR__.'/local-file.txt';
    
$remote_file 'remote-file.txt';
    
    if ( 
ftp_put($conn_id$remote_file$local_fileFTP_BINARY) ) echo "FTP Put : $local_file >> $remote_file \n";
    else echo 
"FTP Error : $local_file >> $remote_file !!!\n";
    
    
// GET
    
$remote_file 'remote-file.txt';
    
$local_file __DIR__.'/local-file.txt';
    
    
$fsize ftp_size($conn_id$remote_file);
    
    if ( 
$fsize!=-) {
        
        echo 
"FTP > Size $remote_file : $fsize \n";
        
        if ( 
ftp_get($conn_id$local_file$remote_fileFTP_BINARY) ) echo "FTP Get : $local_file << $remote_file \n";
        else echo 
"FTP Error : $local_file << $remote_file !!!\n";
    }
    else echo 
"FTP error : File size !\n";
}
else echo 
"FTP Error > ftp_login !\n";

ftp_close($conn_id); 

Cordialement,
Frédéric

toineg
05/03/2015, 17h09
Citation Envoyé par fritz2cat
On ne peut pas faire "wget http://votredomaine.com/votrescript.php" depuis le script qui tourne en ligne de commande ?
En effet, une restriction est appliquée, et cette requête n'aboutira pas.

fritz2cat
05/03/2015, 12h33
On ne peut pas faire "wget http://votredomaine.com/votrescript.php" depuis le script qui tourne en ligne de commande ?

toineg
05/03/2015, 09h45
Bonjour,

Quand j'utilisais le terme infrastructure, je mentionnais bien une partie de l'hébergement mutualisé. Lorsque vous vous connectez en SSH et exécutez un script "votrescript.php" en ligne de commande, l'exécution du script chez OVH ne se fait pas au même endroit que lorsque vous appelez l'URL http://votredomaine.com/votrescript.php.

L'environnement d’exécution de votre script en ligne de commande est plus restrictif. Dans cet environnement, vous ne pouvez donc pas (entre autres) effectuer en ligne de commande les deux exemples que vous citez, à savoir
- une connexion HTTP (en l'occurrence la ligne "$html = file_get_contents('http://cluster015.ovh.net/infos/');" )
- une connexion FTP (en l'occurrence la ligne "ftp_login($conn_id, $login, $pwd)" )

En revanche, votre script pourra fonctionner tel quel lorsque vous appelez http://votredomaine.com/votrescript.php via votre navigateur. Il fonctionnera également en tant que tâche cron.

A noter toutefois que dans les deux cas, vous devrez passer votre connexion FTP en mode passif (voir https://www.ovh.com/fr/g1463.specifi...hp_ftp_via_php).

Anybody-Fr
04/03/2015, 13h25
Bonjour,
Merci d'avoir participé mais vous ne répondez pas à la question...

Je ne veux pas pas exécuter ce script sur une autre infrastructure !
Sinon j'aurais hébergé ce site sur un de nos serveurs dédiés...
MAIS là, nous avons un clients qui veut absolument rester sur son hébergement mutualisé ( Hébergement Performance 2 / cluster015.ovh.net )
Donc la question est :
COMMENT, sur un hébergement mutualisé, exécuter un script PHP en ligne de commande ???
( afin de le lancer automatiquement avec un cron )

toineg
04/03/2015, 10h18
Citation Envoyé par Anybody-Fr
Bonjour,

Nous avons fait un petit script de test qui fonctionne bien en passant par le web
mais qui ne marche pas quand on le lance en CLI.

Quelle est l'astuce, la bonne méthode, sur un hébergement mutualisé, pour exécuter un script en CLI ???

Merci
Bonjour,
L'infrastructure sur laquelle vous vous connectez en SSH pour gérer le contenu de votre hébergement OVH ne vous permet actuellement pas d'effectuer des connections HTTP(S)/FTP.

La manière de procéder pour vos tests est celle que vous avez déjà effectuée, à savoir rédiger le script PHP puis appeler www.mondomaine.fr/testovh.php. Ce script sera exécuté sur une autre infrastructure sur laquelle vous n'aurez pas les limitations ci-dessus.

Anybody-Fr
27/02/2015, 11h20
Bonjour,

Après plusieurs allers-retours infructueux avec le Support "Technique" concernant l’exécution de script PHP en CLI, je tente sur ce Forum...

J'espère que quelqu'un pourra enfin lever les mystères de l’exécution des script PHP en CLI sur un hébergement mutualisé.

Nous avons plusieurs serveurs dédiés et nous avons donc aucun problème pour faire nos développements et exécuter nos scripts PHP en CLI…

MAIS là, nous avons un clients qui veut absolument rester sur son hébergement mutualisé ( Hébergement Performance 2 / cluster015.ovh.net )

Et c'est là que les problèmes commencent…

En effet, impossible de faire fonctionner un script PHP en CLI.

Nous avons fait un petit script de test qui fonctionne bien en passant par le web
mais qui ne marche pas quand on le lance en CLI.

Ce fichier de test :

Code:
 FTP : Login \n";
   }
   else{
      echo date('Y-m-d H:i:s')." > FTP Error : ftp_login !\n";
   }
	
  ftp_close($conn_id);
Si on lance ce script par le web : www.mondomaine.fr/testovh.php
On a bien à l'écran :
Code:
  string(755) + le contenu de la page
  2015-02-27 11:50:58  > FTP : Login
Si par SSH, on lance ce script en CLI : /usr/local/php5.3/bin/php testovh.php
On a sur la console :
Code:
  bool(false)
  2015-02-27 11:52:57 > FTP Error : ftp_login !

Quelle est l'astuce, la bonne méthode, sur un hébergement mutualisé, pour exécuter un script en CLI ???

Merci