Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MacOSCatalina:Can';t从PHP执行ruby_Php_Ruby_Macos_Macos Catalina - Fatal编程技术网

MacOSCatalina:Can';t从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

我已经将我的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'";
$outputDuplicateTarget = system($cmd);
当我从终端执行时,它工作。 但当它来自PHP时就不是了。 在Catalina发布之前,它起了作用

编辑 用ruby脚本

require "xcodeproj"

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

苹果已经从其操作系统中删除了Ruby和其他脚本语言


您可能需要使用ruby版本管理器,如RVM。有关安装说明,请参见

有关在macOS上维护当前最新环境的信息,您有几个选项:

  • 这是一个可以安装的微创版本管理器
  • 哪个更跨平台,但更深入地嵌入到shell环境中
这两种方法都允许您同时安装不同版本的Ruby,并使用项目目录中的
.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脚本工作