1
votes

Mac OS Catalina: impossible d'exécuter ruby ​​à partir de PHP

J'ai mis à jour mon Mac vers la version Catalina. Depuis cette nouvelle version de Mac OS, je ne suis plus en mesure d'exécuter ruby ​​depuis PHP.

Je ne trouve rien d'Internet.

C'est ainsi que j'appelle ruby ​​depuis PHP p >

require "xcodeproj"

Lorsque j'exécute à partir du terminal, cela fonctionne. Mais pas quand ça vient de PHP. Et avant la sortie de Catalina, cela fonctionnait.

MODIFIER dans le script ruby ​​

$cmd = "ruby duplicate_ios.rb '$xcode_version' '$xcodeproj_path' '$bundle_id' '$display_name' '$target_source' '$target_destination' '$iosTeamID'";
$outputDuplicateTarget = system($cmd);

=> semblent être à l'origine du crash (uniquement à partir du script php)


4 commentaires

Mais pas quand c'est de PHP. <- définir où se trouve PHP?


PHP est exécuté à partir de MAMP Apache2. PHP est dans le dossier / usr / bin / php


Si vous essayez avec le chemin complet dans votre script php "/ usr / bin / ruby ​​/my/path/duplicate_ios.rb" cela fonctionne?


Merci, mais ne fonctionne pas.


3 Réponses :


1
votes

1 commentaires

J'ai installé ruby: cela fonctionne depuis le terminal, mais pas depuis le script php



1
votes

Pour maintenir un environnement actuel et à jour sur macOS, vous avez plusieurs options:

  • rbenv qui est un gestionnaire de version peu invasif que vous pouvez installer avec Homebrew .
  • rvm qui est plus multiplateforme, mais qui s'intègre plus profondément dans votre shell environnement.

Les deux vous permettent d'installer différentes versions de Ruby simultanément et de basculer automatiquement entre elles avec un fichier .ruby-version dans le répertoire de votre projet. Cela rend le travail avec des bases de code plus anciennes assez facile.

Ils vous permettent également d'installer des gemmes Ruby sans avoir à rien sudo car les gemmes sont installées pour un seul utilisateur.

AVERTISSEMENT : Lorsque vous appelez system () en PHP, il est extrêmement important d'échapper correctement à tous les arguments de données. Utilisez escapeshellcmd pour gérer l'échappement. Si vous ne le faites pas, vous courez le risque d'erreurs de commande en raison de citations contradictoires, ou pire, car un utilisateur pourrait potentiellement détourner votre système en exécutant des commandes shell arbitraires.


0 commentaires

0
votes

SOLUTION:

PHP a été exécuté dans MAMP, qui utilise une version spéciale de ruby.

Utilisez "php -S 192.168.xx.xx: 8888" au lieu de MAMP a résolu le problème!


0 commentaires