2012-05-02 5 views
3

これまでのところ、これは私が今までに得たものです。私は0666をアーカイブ内のすべてのファイルに適用できる必要があります。私は輸出しているようにそれをすることはできませんか?保管中または保管中にchmodを変更するサンプルコードは何ですか?PHP:アーカイブ中にChmodを適用する

$zip = new ZipArchive; 
if ($zip->open('upload/'. $username . $file_ext) === TRUE) { 
$zip->extractTo('dir/' . $username); 
$zip->close(); 
} else { 
echo 'failed'; 
} 

ありがとうございました! ブランドン

答えて

3

ディレクトリに0666を設定すると、ディレクトリの07770666ファイルのためしかし、それはumask値に依存で使用するLinuxでの任意のプロセスで;-)

ファイルの作成を望むものではないかもしれませんどのような最終的なパーミッションが適用されます。デフォルトではumaskの値は0022で、0644のようなファイルが作成されます。それは減算のように働く。

umaskを0にリセットすると、おそらく必要なものが得られます。

umask(0); 
$zip = new ZipArchive; 
if ($zip->open('upload/'. $username . $file_ext) === TRUE) { 
    $zip->extractTo('dir/' . $username); 
    $zip->close(); 
} else { 
    echo 'failed'; 
} 
+0

私はアンアーカイビングスクリプトの前に、サーバー上の権限がAPIでこれを使用して0604.イムシルあるので、私はそれを自分のサービスにファイルを転送するためのアクセス権を与える必要があると付け加えた... – blbaker

+0

私はumask値を試してみてください(111)。それとも何か? – blbaker

+0

'umask(0)'が機能しない場合は、値を変更しても意味がありません。私はマシン上に 'zip'拡張子を持たないので(コンパイルされないので)、単純な' touch( 'testfile')でテストしただけで、 'umask'を変更すると正しく動作します。 –

関連する問題