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 :

Exécuter un script shell en php


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2018
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 144
    Points : 79
    Points
    79
    Par défaut Exécuter un script shell en php
    Hello,

    Je cherche à exécuter un script shell depuis une interface écrite en javascript.

    Je communique avec ma base de données avec du PHP (fichiers php et API)

    Le script consiste à redimensionner des images et à les intégrer dans la base de données. Actuellement, je le fais manuellement depuis mon espace serveur, en exécutant les scripts. Ca marche parfaitement, mais ce serait encore plus parfait si l'on pouvait le faire depuis cette interface.

    Je sais que ça pose pas mal de problèmes niveau sécurité (je verrais ça dans un second temps).

    J'ai lu que pour exécuter ce script dans un fichier, il fallait utiliser les fonctions exec(), shell_exec() ou passthru().

    Est ce que qqu'un pourrait m'expliquer comment ça marche et/ou s'il y a d'autres solutions plus efficaces ?

    Je vous remercie pour vos retours.

    Sylvain

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 331
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 331
    Points : 15 675
    Points
    15 675
    Par défaut
    avez-vous déjà un espace sécurisé par mot de passe sur votre site ?

    du côté de la sécurité, je pense que le plus dangereux est de laisser la possibilité à un utilisateur malveillant de lancer n'importe quelle commande. ensuite même si un utilisateur malveillant arrive à lancer le script de traitement des images, il faudra aussi éviter qu'il le lance en boucle pour saturer les ressources du serveur.
    ces différents problèmes peuvent être éviter si vous êtes le seul à pouvoir accéder à cela avec une protection par mot de passe.

  3. #3
    Membre expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 785
    Points : 3 048
    Points
    3 048
    Par défaut
    Bonjour

    Citation Envoyé par sylvain257 Voir le message
    J'ai lu que pour exécuter ce script dans un fichier, il fallait utiliser les fonctions exec(), shell_exec() ou passthru().
    Ces fonctions sont la plupart du temps désactivées par l'hébergeur.

    Le petit bout de code ci-dessous devrait afficher la liste des fonctions bloquées par l'hébergeur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <?php
    echo ini_get('disable_functions');
    Dans un monde idéal; vous devriez chercher à éviter d'appeler un script externe et de le faire immédiatement en PHP. Certaines librairies pourraient peut-être exister pour ce besoin.

    (Vite trouvé sur Ggl : https://github.com/gumlet/php-image-resize; non testé)

  4. #4
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2018
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 144
    Points : 79
    Points
    79
    Par défaut
    @cavo789 :
    ini_get ne me remonte rien et mon hébergeur me confirme que ce sont des fonctions actives sur leurs serveurs

    @mathieu : j'ai un espace mutualisé protégé par mot de passe. L'accès au site se fait en https mais l'accès se fait de la même en http.... Pas top

  5. #5
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 331
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 331
    Points : 15 675
    Points
    15 675
    Par défaut
    pour forcer l'utilisation de https, vous pouvez essayer le code suivant dans le fichier .htaccess :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteCond %{HTTP:X-Forwarded-Proto} !https
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
    ensuite pour l'exécution des scripts, vous avez juste besoin de tester le mot de passe avant de lancer la commande du script.

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

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

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 230
    Points
    20 230
    Par défaut
    Pour répondre à la question initiale :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $output = shell_exec("./monscript.sh");
    Ceci étant dit , il peut y'avoir des problèmes de permissions, puisque c'est l'utilisateur qui exécute apache qui va exécuter le script (en général www-data) et c'est généralement un compte assez limité justement pour éviter des problèmes de sécurité.

    Au delà de ca si les traitement sur les images ne sont "que" des redimensionnement simple , il serait probablement plus judicieux de les faire en PHP pour entre autre traiter facilement les erreurs. Avec un retour de script c'est bien plus fastidieux.

  7. #7
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2018
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 144
    Points : 79
    Points
    79
    Par défaut
    @grunk,

    Non il n'y a pas que le redimensionnement des images, il y a aussi une intégration en base de données

    Actuellement, je suis le seul à utiliser cette plate-forme cartographique.

Discussions similaires

  1. Exécution de script shell via PHP
    Par Sayko dans le forum Langage
    Réponses: 1
    Dernier message: 13/03/2013, 23h17
  2. Exécuter un script shell côté client via php
    Par Heisen dans le forum Langage
    Réponses: 2
    Dernier message: 15/03/2011, 18h45
  3. Exécuter un script shell depuis php
    Par allyass dans le forum Linux
    Réponses: 5
    Dernier message: 12/12/2009, 01h14
  4. [Système] Exécution d'un script SHELL avec PHP
    Par diabli73 dans le forum Langage
    Réponses: 5
    Dernier message: 02/10/2008, 15h07
  5. Réponses: 10
    Dernier message: 15/07/2008, 11h52

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