PHP的exec()命令的权限被拒绝(php exec() command perm

2019-06-23 19:05发布

我有一个C ++的可执行文件“skypeforwarder”。 skypeforwarder工作,如果我在Mac上使用命令行终端:亨利$ /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

它仍然无法正常工作。

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

Answer 1:

虽然文件本身是由Web服务器可读的Desktop文件夹中最有可能的是没有了,Web服务器,因此无法穿越到它找到可执行文件。 你应该在移动skypeforwarder二进制文件到由网服务器,读取的位置,如并行到您正试图为这个PHP脚本的目录。 该目录不应该,但是,是网络的访问。 用的.htaccess保护它或将它上面的网页DocumentRoot的,但它必须是由Web服务器读取。

默认情况下, Desktop上OSX是-rwxr------ ,这是不可取的改变该目录的权限。

此外,这是非常不可取的改变将所拥有的文件,并写入_www Web服务器用户。 相反,它应该是可读的,由Web服务器可执行文件,但是不能写。

chown henry skypeforwarder
chmod 755 skypeforwarder

标准免责声明:和往常一样,是非常谨慎的执行系统从网络上访问PHP脚本调用时。



Answer 2:

尝试一下php.ini中的禁用功能

disable_functions = exec


文章来源: php exec() command permission denied