5

PHP の is_readable() 関数を呼び出すと、コマンド プロンプトから読み取り可能なディレクトリで false が返されます。アクセス許可を最も許可されたものに変更しましたが、まだ運がありません。

ls -lad /remote/samba_share
drwxrwxr-x 13 me users 0 May 29 15:49 /remote/samba_share

ls -la /remote/samba_share
drwxr-xr-x  4 me users 0 May  8 14:19 /remote/samba_share/local_dir
drwxr-xr-x 16 me users 0 May 14 19:49 /remote/samba_share/second_drive
drwxrwxrwx 12 me users 0 May 30 09:42 /remote/samba_share/ext_raid

次のコードを実行しています...

if (is_readable('/remote/samba_share'              )){ echo "share ok\n";  } else { echo "share BAD\n";  }
if (is_readable('/remote/samba_share/local_dir'    )){ echo "local ok\n";  } else { echo "local BAD\n";  }
if (is_readable('/remote/samba_share/second_drive' )){ echo "second ok\n"; } else { echo "second BAD\n"; }
if (is_readable('/remote/samba_share/ext_raid'     )){ echo "raid ok\n";   } else { echo "raid BAD\n";   }

...結果は...

share ok
local ok
second BAD
raid BAD

物理プライマリ パーティション上にない samba 共有の下のディレクトリは、失敗するようです。

is_readable() が呼び出されるマシンの構成の詳細:

php -v
PHP 5.3.11-pl0-gentoo (cli) (built: May  5 2012 16:48:35)

php.ini:
    safe_mode = Off
    safe_mode_gid = On # (tried either way, shouldn't matter)
    ;open_basedir =

/etc/fstab entry:
    //remote_machine/samba_share /remote/samba_share cifs iocharset=utf8,credentials=/blahblah/samba_credentials,uid=me,gid=users,file_mode=0777,dir_mode=0777,auto   0 0

eix samba
[I] net-fs/samba
     Installed versions:  3.5.15!t

リモート マシンの構成の詳細:

eix samba
[I] net-fs/samba
     Installed versions:  3.5.15!t

/etc/samba/smb.conf:

    [samba_share]
       path = /samba_share/
       public = yes
       writable = yes
    ;  printable = yes
       browseable = yes
       create mask = 0777
       create mode = 0777
       directory mode = 0777

これを機能させるために考えられることはすべて試しましたが、今ではばかげていると感じています。:-) 誰かに関係があると思われる場合は、カーネル構成も提供できます。助けてくれてありがとう!

4

2 に答える 2

1

is_readable()アクセスシステムコールをラップしてファイルのアクセス許可を決定するだけなので、PHPの問題ではない可能性が非常に高くなります。

sambaの設定とファイルのパーミッションによると、非常に可能性の高い理由はSELINUXである可能性があります。PHPはおそらく別のユーザーとして実行されているため(CLIがapache modであるかどうかに関係なく)、selinuxがこのユーザーのアクセスを拒否している可能性があります。

したがって、selinuxが有効または無効になっているかどうかを確認するか、適切に構成してください。

于 2012-05-31T12:39:29.420 に答える
1

これに対する簡単な答えが見つからなかったので 、問題をよりよく追跡するために、新しいPHP バグ チケットを作成しました。すべての入力に感謝します!

于 2012-06-04T02:28:42.587 に答える