PHP无法在浏览器上复制(exec pbcopy)到剪贴板,但在终端上

时间:2016-12-11 22:24:59

标签: php apache

我正在运行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

1 个答案:

答案 0 :(得分:1)

我找到了一个解决方法,在从MAMP手动运行.../apachectl start之后,它已经工作了,现在我已经扩展了exec权限并且可以在访问浏览器页面时运行osascripts(例如显示对话框)。 (它有效,我完全不知道为什么,我认为它不是因为二进制)