4

あるSMBマウントから別のマウントにファイルをコピーする簡単なスクリプトがあります。ソースファイルシステムは同じですが、Webサーバーが異なります。私はPHPを使用して、ファイルを一時ディレクトリにコピーし、追加のタスクを実行してファイルを処理しています。この設定は、ある時点では機能していましたが、正しく機能しなくなったようです。誰かが私を正しい方向に向けることができますか?

fstabマウント

//192.168.0.x/share /media/folder smbfs username=user,password=mypass
//192.168.0.x/share2 /media/folder2 smbfs username=user,password=mypass

phpコード

copy('/media/folder/filename.txt','/media/folder2/temp/filename.txt');

エラー

Warning: copy(/media/folder2/temp/filename.txt): failed to open stream: Permission denied in /www/myphp.php on line xx

フォルダーのアクセス許可(マウントではなく、ファイルサーバー上のソースフォルダー):

/media/folder = 777 
/media/folder2/temp = 777
4

3 に答える 3

1
system("cp /media/folder/filename.txt /media/folder2/temp/filename.txt");

あなたのために働くかもしれません。

于 2011-07-10T17:07:22.587 に答える
0

PHPではなく権限とOSに固有の質問のように聞こえます..どのWebサーバーですか?サーバーは何として実行されていますか?誰も:誰も?nobody:nobodyまたはwww-root:www-rootは、アクセスしようとしているディレクトリにデータを読み書きできませんか?

sudo su - nobody

  • /bin/falseシェルがある可能性が高いため、おそらく機能しません
  • 誰も正しいアカウントではないかもしれません..ps auxw | grep apache | awk {'print $1'}そしてそれがどのユーザーとして実行されているかを確認してください...そしてそのアカウントに切り替えてみてくださいsudo

PHPがファイルの書き込みにアクセスできるようになる前に、Webサーバーを実行しているユーザーが...しようとしているディレクトリへの読み取り/書き込みにアクセスできることcopyを確認する必要があります。

于 2011-07-10T05:41:49.353 に答える
0

コマンドを次のように変更しました:

copy('/media/folder/filename.txt','/tmp/filename.txt');

どうやら、SMB共有でファイルを処理するのは思ったより難しいようです。ファイルは、コンピュータの再起動時に、またはシステム設定に応じて定期的に削除する必要があります。

于 2011-07-10T17:03:24.903 に答える