Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 17/01/2017, à 11:26

sgendt

PHP exec function pour script SH Node npm webpack

Bonjour à tous,

Je suis nouveau sur le forum donc j'en profite pour saluer tout le monde.
J'aurais besoin de votre aide/conseils dans le cadre suivant:

J'ai un script PHP très simple qui utilise la fonction "exec" pour exécuter un script bash contenu dans un fichier .sh
Le but est du script bash est de run un "npm install" puis un "npm run build" qui lance une commande webpack.

Le script php:

<?php
    exec(realpath(__DIR__).'/build.sh', $output, $return_var);
?>

Le script bash contenu du fichier build.sh:

#!/usr/bin/env bash
clear
echo "******* CD directory project *******"
cd repositories/project
echo "******* Install dependencies *******"
npm install
echo "******* Build project *******"
npm run build
echo "******* Prepare download *******"
rm -rf node_modules

Le script php et le script bash sont au même niveau dans l'arborescence.
Le projet à builder sont deux niveaux en dessous dans directories/projet/.

Quand je me connecte en ssh au serveur ubuntu avec un user qui n'est pas sudoer et que j'exécute le script bash en ligne de commande:

bash build.sh

Ca fonctionne très bien.
Cependant quand je run le script php uniquement le npm install fonctionne.

Le package.json:

{
  "name": "bluebuzz-wp-template",
  "version": "1.0.0",
  "description": "base template for wordpress site",
  "main": "index.js",
  "scripts": {
    "build": "webpack --config webpack.babel.js",
    "watch": "webpack --config webpack.babel.js --watch",
    "build-prod": "set NODE_ENV=production&& npm run build"
  },
  "author": "sebastien GENDT",
  "license": "ISC",
  "babel": {
    "presets": [
      "es2015",
      "stage-0",
      "react"
    ]
  },
  "devDependencies": {
    "babel-core": "^6.5.2",
    "babel-loader": "^6.2.3",
    "babel-polyfill": "^6.5.0",
    "babel-preset-es2015": "^6.5.0",
    "babel-preset-react": "^6.5.0",
    "babel-preset-stage-0": "^6.5.0",
    "babel-register": "^6.5.2",
    "clean-webpack-plugin": "^0.1.9",
    "css-loader": "^0.23.1",
    "extract-text-webpack-plugin": "^1.0.1",
    "file-loader": "^0.8.5",
    "image-size-loader": "^0.7.0",
    "node-sass": "^3.4.2",
    "on-build-webpack": "^0.1.0",
    "sass-loader": "^3.1.2",
    "style-loader": "^0.13.0",
    "webpack": "^1.12.14",
    "webpack-clean-manifest-plugin": "^0.2.1",
    "webpack-manifest-plugin": "^1.0.0"
  },
  "dependencies": {
    "bootstrap-sass": "^3.3.7",
    "font-awesome": "^4.6.3"
  }
}

La config du serveur:
Ubuntu
Plesk
Apache
PHP
MySQL
NODE
npm

Toutes suggestions sont les bienvenues.
Merci.

Hors ligne

#2 Le 17/01/2017, à 12:53

bruno

Re : PHP exec function pour script SH Node npm webpack

Bonjour,

Ta question aurait sans plus sa place dans la section développement.

Je suppose que c'est un problème de droits d'accès. Avec une configuration Apache/PPH de base les scripts php sont exécutés par l'utilisateur www-data et par conséquent c'est également le cas de ton script bash.
Il faut donc t'assurer que les dossiers (repositories/project) en question sont bien accessible en lecture et en écriture à cet utilisateur.


Attention, les bouteilles vendues par Nestlé Waters sont contaminées au monoxyde de dihydrogène.

Hors ligne

#3 Le 17/01/2017, à 15:23

sgendt

Re : PHP exec function pour script SH Node npm webpack

Effectivement,

Par contre ce qui m'inquiète c'est qu'il y a Plesk d'installé, par conséquent l'utilisateur par défaut n'est plus www-data, est-ce qu'en changeant les droits du groupe créé par Plesk je ne risque pas de générer des problèmes?

Hors ligne