smbclient を開始するために shell_exec を試みている非常に単純なページがあります。
この行は対話型シェルでは正常に機能しますが、ブラウザーでは失敗します。
インタラクティブ シェル
[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)
?>
PHP に libsmbclient を使用しようとすると、次のエラーが発生します。
警告: SMB ディレクトリを開けませんでした smb:// IP /共有: 不明なエラー (110)
対話型シェルでは機能するが、ブラウザでは機能しない原因について考えている人はいますか?
サーバーはCentOS6
アップデート
問題をSELinuxが原因であることに絞り込みました(一時的に無効にしました)。
selinux を介して smbclient を許可する方法を知っている人はいますか?