Mac OS Catalina:无法从PHP执行红宝石

时间:2019-11-05 10:38:13

标签: php ruby macos macos-catalina

我已将Mac更新为Catalina版本。 从Mac OS的这个新版本发布以来,我不再能够从PHP执行ruby。

我找不到任何互联网。

这就是我从PHP调用ruby的方式

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

当我从终端执行时,它可以工作。 但是当它来自PHP时不是。 在Catalina发布之前,它就奏效了。

编辑 用红宝石脚本

require "xcodeproj"

=>似乎是崩溃的根源(仅来自php脚本)

3 个答案:

答案 0 :(得分:1)

Apple已从其操作系统see deprecations

中删除了Ruby和其他脚本语言。

您可能想要使用诸如RVM之类的ruby版本管理器。有关安装说明,请参见https://rvm.io/rvm/install

答案 1 :(得分:1)

要在macOS上维护最新的环境,您可以选择以下几种方式:

  • rbenv,这是可以通过Homebrew安装的微创版本管理器。
  • rvm,它更具跨平台性,但更深入地嵌入到您的shell环境中。

这两种方法都允许您同时安装不同版本的Ruby,并使用项目目录中的.ruby-version文件自动在它们之间切换。这使得使用较旧的代码库非常轻松。

它们还允许您安装Ruby gem,而无需sudo,因为仅为一个用户安装了gem。

警告:在PHP中调用system()时,正确地转义所有数据参数非常重要。使用escapeshellcmd处理转义。如果您不这样做,则可能会因为引号冲突而导致命令错误,甚至更糟,因为用户可能会通过运行任意shell命令来劫持您的系统。

答案 2 :(得分:0)

解决方案:

PHP在MAMP中运行,它使用特殊的红宝石版本。

使用“ php -S 192.168.xx.xx:8888”代替MAMP解决了该问题!