php exec()命令权限被拒绝

我有一个C ++可执行文件'skypeforwarder'。 如果我在Macterminal中使用命令行,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 /浏览器权限的问题。 我也试图改变文件的所有者:

 -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

Solutions Collecting From Web of "php exec()命令权限被拒绝"

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

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

而且,通过Web服务器用户来改变文件的拥有和写入是非常不可取的。 相反,它应该是Web服务器可读和可执行的,但不可写。

 chown henry skypeforwarder chmod 755 skypeforwarder 

标准免责声明:与往常一样,在Web上访问PHP脚本执行系统调用时要非常谨慎。

试试看php.ini中的禁用功能

 disable_functions = exec