我有一个非常简单的页面,试图通过 shell_exec 启动一个 smbclient。
该行在交互式 shell 中工作正常,但在浏览器中失败。
交互式外壳
[root@vle html]# php -a
Interactive shell
php > $exec = exec("smbclient //*IP*/*Share* -U *Username*%*Password*");
Domain=[...] OS=[Windows Server 2012 Standard 9200] Server=[Windows Server 2012 Standard 6.2]
这按预期工作。但是,在由 Apache 提供支持的 PHP 文件中执行此操作时,我得到以下信息:
测试在浏览器中执行的 PHP 文件
<?php
$exec = exec("smbclient //*IP*/*Share* -U *Username*%*Password");
print_r($exec);
// returns Connection to *IP* failed (Error NT_STATUS_ACCESS_DENIED)
?>
尝试将 libsmbclient 用于 php 时,出现以下错误:
警告:无法打开 SMB 目录 smb:// IP /共享:未知错误 (110)
有没有人有任何想法可能导致它在交互式外壳中工作而不是在浏览器中工作?
服务器是 CentOS 6
更新
我已将问题缩小到由 SELinux 引起的(我暂时禁用了它)。
有谁知道如何通过 selinux 允许 smbclient ?