我正在运行MAMP,这是我要测试的PHP代码:
<?php
ini_set('display_errors', true);
error_reporting(E_ALL);
header('content-type:text/plain');
ob_start();
echo ini_get('safe_mode') ? 'safe' : 'not safe';
echo PHP_EOL;
echo exec('whoami').PHP_EOL;
echo exec('groups').PHP_EOL;
echo exec('which pbcopy').PHP_EOL;
$str = 'teststr'.rand(0, 9999);
exec('echo "'.$str.'" | pbcopy');
$pbpaste = exec('pbpaste 2>&1');
echo $pbpaste.PHP_EOL;
echo $pbpaste == $str ? 'IT WORKS' : 'failed';
echo PHP_EOL;
file_put_contents('output.log', ob_get_contents());我在终端和浏览器上得到了相同的输出(比如相同的用户和pbcopy路径),但在终端上它显示"IT WORKS",因为pbcopy和pbpaste的执行是有效的。
这在以前的MAMP版本上有效,但在更新MAMP后,它不再起作用。
顺便说一下:我正在为monosnap开发webdav skript,所以实际上我想让它在monosnap上工作,但它不能。Monosnap也只是调用localhost....script.php,所以我认为这也是为什么它在浏览器中不能工作的问题。
仅供参考,终端输出:
not safe
firebook
staff everyone localaccounts _appserverusr admin _appserveradm _lpadmin com.apple.sharepoint.group.1 _appstore _lpoperator _developer com.apple.access_ftp com.apple.access_screensharing com.apple.access_ssh-disabled
/usr/bin/pbcopy
teststr9794
IT WORKS浏览器中的输出
not safe
firebook
staff everyone localaccounts _appserverusr admin _appserveradm _lpadmin com.apple.sharepoint.group.1 _appstore _lpoperator _developer com.apple.access_ftp com.apple.access_screensharing com.apple.access_ssh-disabled
/usr/bin/pbcopy
failed发布于 2016-12-12 08:31:34
我找到了一个解决办法,在从MAMP手动运行.../apachectl start后它起作用了,现在我有了扩展的exec权限,并且可以在访问浏览器页面时运行osascripts (例如,显示对话框)。(它起作用了,我不知道具体原因,我认为这不是因为二进制)
https://stackoverflow.com/questions/41091814
复制相似问题