MacOSCatalina:Can';t从PHP执行ruby
我已经将我的Mac升级到Catalina版本。 自从MacOS发布以来,我再也不能从PHP执行ruby了 我在网上找不到任何东西 这就是我从PHP调用ruby的方式MacOSCatalina:Can';t从PHP执行ruby,php,ruby,macos,macos-catalina,Php,Ruby,Macos,Macos Catalina,我已经将我的Mac升级到Catalina版本。 自从MacOS发布以来,我再也不能从PHP执行ruby了 我在网上找不到任何东西 这就是我从PHP调用ruby的方式 $cmd = "ruby duplicate_ios.rb '$xcode_version' '$xcodeproj_path' '$bundle_id' '$display_name' '$target_source' '$target_destination' '$iosTeamID'"; $outputDuplicateTar
$cmd = "ruby duplicate_ios.rb '$xcode_version' '$xcodeproj_path' '$bundle_id' '$display_name' '$target_source' '$target_destination' '$iosTeamID'";
$outputDuplicateTarget = system($cmd);
当我从终端执行时,它工作。
但当它来自PHP时就不是了。
在Catalina发布之前,它起了作用
编辑
用ruby脚本
require "xcodeproj"
=>似乎是崩溃的根源(仅来自php脚本)苹果已经从其操作系统中删除了Ruby和其他脚本语言
您可能需要使用ruby版本管理器,如RVM。有关安装说明,请参见有关在macOS上维护当前最新环境的信息,您有几个选项:
- 这是一个可以安装的微创版本管理器
- 哪个更跨平台,但更深入地嵌入到shell环境中
.Ruby version
文件在它们之间自动切换。这使得使用较旧的代码库非常容易
它们还允许您安装Ruby gems,而无需sudo
任何操作,因为gems仅为一个用户安装
警告:在PHP中调用
system()
时,正确转义所有数据参数非常重要。用于处理转义。如果您未能做到这一点,您将面临由于引用冲突而导致命令错误的风险,或者更糟,因为用户可能通过运行任意shell命令来劫持您的系统。解决方案:
PHP是在MAMP中运行的,MAMP使用一个特殊的ruby版本
用“php-s192.168.xx.xx:8888”代替MAMP修复了这个问题
但当它来自PHP时就不是了。
PHP是从MAMP Apache2执行的。PHP位于/usr/bin/PHP文件夹中,如果您尝试在PHP脚本中使用完整路径“/usr/bin/ruby/my/path/duplicate_ios.rb”它可以工作?谢谢,但不能工作。我安装了ruby:它可以从终端工作,但不能从PHP脚本工作