我正在运行MAMP,我的PHP代码进行测试:
// Initialize quickPay with your API key
var quickPay = require("quick-pay")(YOUR_API_KEY_GOES_HERE);
module.exports = function (router, mongoose) {
var transaction_id = {};
router.route('/api/payment')
.put(function (req, res) {
processCreatePayment(req, res);
});
function processCreatePayment(req, res) {
var random_order_id = Math.floor((Math.random() * 1000) + 1);
var parameters = {
"currency": "INR",
"order_id": random_order_id
};
quickPay.post("payments/", null, parameters)
.then(function (result) {
console.log(result);
res.send(result);
transaction_id = result.id;
console.log(transaction_id);
})
.catch(function (err) {
console.log(err.response);
res.send(err.response);
});
}
return router;
};
我在终端和浏览器上获得了相同的输出(如同一个用户和pbcopy路径),但在终端上显示" IT WORKS",因为执行pbcopy和pbpaste有效。
之前在MAMP的上一版本中有效,但在更新MAMP之后它已经不再适用了。
顺便说一句:我正在使用webdav skript for monosnap,所以实际上我希望它能在monosnap上工作,但事实并非如此。 Monosnap也只是调用localhost .... script.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());
在浏览器中输出
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
答案 0 :(得分:1)
我找到了一个解决方法,在从MAMP手动运行.../apachectl start
之后,它已经工作了,现在我已经扩展了exec权限并且可以在访问浏览器页面时运行osascripts(例如显示对话框)。 (它有效,我完全不知道为什么,我认为它不是因为二进制)