我已将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脚本)
答案 0 :(得分:1)
Apple已从其操作系统see deprecations
中删除了Ruby和其他脚本语言。您可能想要使用诸如RVM之类的ruby版本管理器。有关安装说明,请参见https://rvm.io/rvm/install
答案 1 :(得分:1)
要在macOS上维护最新的环境,您可以选择以下几种方式:
这两种方法都允许您同时安装不同版本的Ruby,并使用项目目录中的.ruby-version
文件自动在它们之间切换。这使得使用较旧的代码库非常轻松。
它们还允许您安装Ruby gem,而无需sudo
,因为仅为一个用户安装了gem。
警告:在PHP中调用system()
时,正确地转义所有数据参数非常重要。使用escapeshellcmd
处理转义。如果您不这样做,则可能会因为引号冲突而导致命令错误,甚至更糟,因为用户可能会通过运行任意shell命令来劫持您的系统。
答案 2 :(得分:0)
解决方案:
PHP在MAMP中运行,它使用特殊的红宝石版本。
使用“ php -S 192.168.xx.xx:8888”代替MAMP解决了该问题!