2011-02-10 10 views
8

(MKDIRを呼び出そうとしたとき、私は、サーバー...ます。mkdirに拒否されたアクセス権()

警告に)次のエラーを取得しています。mkdir()[function.mkdir]:で拒否された 許可ライン373

機能上の /home/server/public_html/wp-content/themes/mytheme/catimages/cat-images.php は以下の通りです。そのサイトの "wp-content/uploads"フォルダの下にフォルダを作成しようとしています。 PHPバージョンが5.2.15で、テーマフォルダ内のファイルが書き込み可能であることを確認しましたが、必ずしもアップロードフォルダが書き込み可能であるとは限りません。

アップロードフォルダが書き込み可能かどうかを確認するにはどうすればよいですか?

protected function category_images_base_dir() 
{ 
    // Where should the dir be? Get the base WP uploads dir 
    $wp_upload_dir = wp_upload_dir(); 
    $base_dir = $wp_upload_dir[ 'basedir' ]; 
    // Append our subdir 
    $dir = $base_dir . '/cat-images'; 
    // Does the dir exist? (If not, then make it) 
    if (! file_exists($dir)) { 
     mkdir($dir); //THIS IS LINE 373 
    } 
    // Now return it 
    return $dir; 
} 
+0

あなたはmkdirのresuriceフラグを設定する必要があるかもしれません;) – NikiC

+0

:)これは実際に面白いです:どうやって調べることができますか? - >あなたは警告を受け取ります:...パーミッションが拒否されました...あなたが知っているように、フォルダはWebサーバユーザによって書き込み可能ではありません。もしsshアクセス権を持っていれば、chmod -R 777/home/server/public_html/wp-contentを実行することができます。もしあなたがsshアクセス権を持っていなければ、あなたはお気に入りのftpクライアントですが、wp- wp-content上にあり、ほとんどのftpクライアントは権限を変更するために使用する権限のタブまたはボックスをどこかに持っています。 –

+6

@poelincaできるならば、私はそれをdownvoteしたいと思います。あなたは真剣に彼のディレクトリが世界的に読めるように提案しているので、 "問題は遠ざかります"? –

答えて

7

is_writable()は、おそらくあなたが探している機能です。

http://cz.php.net/manual/en/function.is-writable.php氏は述べています:ファイル名が存在し、書き込み可能である場合

はTRUEを返します。 filename引数は、ディレクトリが書き込み可能かどうかを確認するためのディレクトリ名です。

また、直接次の行は、ここでは関係あり:

は、PHPは、Webサーバが(「nobody」が多い)として実行するユーザーIDでファイルにアクセスすることを覚えておいてください。

つまり、ディレクトリがWebサーバーのユーザーIDによって書き込み可能かどうかを確認します。これは、ユーザーIDと異なるユーザーIDです。適切なアクセス許可を設定します。フォルダのユーザーグループをサーバーのユーザーのユーザーグループに設定し、グループに読み取り、書き込み、および実行を許可します。 (chgrp somegroup uploads; chmod g+r uploads; chmod g+w uploads; chmod g+x uploads

+0

素晴らしい答えをありがとう。親フォルダのis_writable()状態を確認し、そのイベントで例外処理を追加するために、いくつかの追加のコードチェックを挿入します。 –

+0

@Scott B:ようこそ。 – Piskvor

1

親フォルダがWebサーバーが実行されるプロセスに書き込み可能であることを確認してください。

編集:おっと、早すぎる返信。あなたのホストはあなたにGUIファイルブラウザを提供していますか?

関連する問題