我想知道是否有人找到了一种方法来检测 PHP 脚本/程序是通过 Facebook 的 HipHop 还是“常规”环境(CLI、mod_php、CGI)运行的。
目前我正在使用的解决方法是寻找未实现的功能(例如 PHP 5.3 功能)并检查所述功能的可用性。当然,这是一个相当狡猾的 hack(而不是可移植的),因为随着 HipHop 的成熟,将实现越来越多的功能。
我想知道是否有人找到了一种方法来检测 PHP 脚本/程序是通过 Facebook 的 HipHop 还是“常规”环境(CLI、mod_php、CGI)运行的。
目前我正在使用的解决方法是寻找未实现的功能(例如 PHP 5.3 功能)并检查所述功能的可用性。当然,这是一个相当狡猾的 hack(而不是可移植的),因为随着 HipHop 的成熟,将实现越来越多的功能。
$_ENV['HPHP']
在 HipHop 下运行时设置为 1。
感谢 nicolasff 的解决方案
参考:https ://github.com/facebook/hiphop-php/issues/382#issuecomment-1754648
我认为这种方法根本行不通——因为 HipHop 静态编译您项目中的所有代码,所以您不能包含任何 HipHop 无法理解的代码路径或函数调用,即使它们在运行时被跳过。基本上,要让您的项目在 HipHop 下运行,您必须编写大部分(如果不是全部)代码,并假设它正在被使用。