Mac OS Catalina: не удается запустить ruby ​​из PHP - PullRequest
1 голос
/ 05 ноября 2019

Я обновил свой Mac до версии Catalina. Начиная с этой новой версии Mac OS, я больше не могу выполнять ruby ​​из PHP.

Я не могу найти что-либо в Интернете.

Вот как я называю ruby ​​из PHP

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

Когда я выполняю из терминала, это работает. Но не тогда, когда это из PHP. И до релиза Catalina это работало.

EDIT в скрипте ruby ​​

require "xcodeproj"

=> похоже, это причина возникновения сбоя (только из скрипта php)

Ответы [ 3 ]

1 голос
/ 05 ноября 2019

Для поддержания текущей, современной среды в macOS у вас есть несколько вариантов:

  • rbenv, который является минимально инвазивным менеджером версий, который вы можете установить с помощью Homebrew .
  • rvm, который более кроссплатформенный, но более глубоко внедряется в вашу оболочку.

Обаиз них вы можете устанавливать разные версии Ruby одновременно и автоматически переключаться между ними с помощью файла .ruby-version в каталоге вашего проекта. Это значительно облегчает работу со старыми базами кода.

Они также позволяют устанавливать гемы Ruby без необходимости sudo ничего, поскольку гемы устанавливаются только для одного пользователя.

ПРЕДУПРЕЖДЕНИЕ : при вызове system() в PHP крайне важно правильно экранировать все аргументы данных. Используйте escapeshellcmd для обработки экранирования. Если вам не удастся сделать это, вы рискуете ошибиться в команде из-за конфликтующих кавычек или, что еще хуже, поскольку пользователь может потенциально взломать вашу систему, выполнив произвольные команды оболочки.

1 голос
/ 05 ноября 2019

Apple удалила Ruby и другие языки сценариев из своих ОС, см. Устаревшие

Возможно, вы захотите использовать менеджер версий ruby, такой как RVM. Инструкции по установке см. https://rvm.io/rvm/install

0 голосов
/ 07 ноября 2019

РЕШЕНИЕ:

PHP был запущен в MAMP, который использует специальную версию ruby.

Используйте взамен "php -S 192.168.xx.xx: 8888"MAMP исправил проблему!

...