gpt4 book ai didi

php exec() 命令权限被拒绝

转载 作者:IT王子 更新时间:2023-10-29 01:10:31 27 4
gpt4 key购买 nike

我有一个 C++ 可执行文件“skypeforwarder”。如果我在 Mac 的终端中使用命令行,则 skypeforwarder 可以工作: henry$/Users/henry/Desktop/skypeForwarder/skypekit-sdk_sdk-4.1.2.20_793394/examples/cpp/tutorial/step3/skypeForwarder

sh: /Users/henry/Desktop/skypeForwarder/skypekit-sdk_sdk-4.1.2.20_793394/examples/cpp/tutorial/step3/skypeForwarder: Permission denied

但如果在 php exec() 中调用它,它总是发出“权限被拒绝”;

<?php 
echo exec('whoami');

$output = null;

$execBuild = '/Users/henry/Desktop/skypeForwarder/skypekit-sdk_sdk-4.1.2.20_793394/examples/cpp/tutorial/step3/';
$execBuild .= 'skypeForwarder';

$n = exec($execBuild, $output);

我搜索了很多。问题应该是web服务器的php/browser权限问题。我还尝试更改文件的所有者:

-rwxr-xr-x  1 henry  staff  1212716 19 Apr 11:23 skypeForwarder

-rwxr-xr-x  1 _www  staff  1212716 19 Apr 11:23 skypeForwarder

还是不行。

我根据 http://foundationphp.com/tutorials/php_leopard.php 在我的 mac 中设置了 apache

最佳答案

虽然文件本身可由 Web 服务器读取,但 Desktop 文件夹很可能不是,因此 Web 服务器无法遍历它来定位可执行文件。您应该将 skypeforwarder 二进制文件移动到 Web 服务器可读的位置,例如与您尝试提供此 PHP 脚本的位置平行的目录。但是,该目录不应可通过网络访问。用 .htaccess 保护它或将它放在 web DocumentRoot 之上,但它必须可以被 web 服务器读取。

默认情况下,OSX 上的Desktop-rwxr------建议更改该目录的权限.

此外,非常建议将文件更改为由 _www 网络服务器用户拥有和写入。相反,它应该可由网络服务器读取和执行,但不可写。

chown henry skypeforwarder
chmod 755 skypeforwarder

标准免责声明:一如既往,从可在网络上访问的 PHP 脚本执行系统调用时要格外小心。

关于php exec() 命令权限被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10236091/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com