2012-04-16 12 views
4
Warning: move_uploaded_file(activities.png): 
failed to open stream: 
Permission denied in /var/www/vhosts/default/htdocs/backoffice/db/changelogo.php on line 17 
Warning: move_uploaded_file(): 
Unable to move '/tmp/phpTNQXEi' to 'activities.png' in /var/www/vhosts/default/htdocs/backoffice/db/changelogo.php on line 17 

この.phpスクリプトの不正なファイルアクセス権のため、アクセス権が拒否されます。SSHとCHMODを使用してファイルのアップロードを許可するファイルのアクセス権を変更する

ファイルのアップロードを許可し、SSH(またはSFTP)を使用して画像のアップロードを許可する権限を拒否されないようにするにはどうすればよいですか。ここ

は、参照目的のためのPHPスクリプトです:

<?php 
include 'realtydevkit.php'; 
session_start(); 

umask(0077); 

$name = $_FILES['yourlogo']['name']; 
$tmpname = $_FILES['yourlogo']['tmp_name']; 
$error = $_FILES['yourlogo']['error']; 

ini_set("display_errors", 1); 

echo $error; 

if ($name) { 
    $directory = $name; 
    $userid = $_SESSION['userid']; 
    $type = "logo"; 

    $file = move_uploaded_file($tmpname, $directory); 

    if ($file) {  
    mysql_query("INSERT INTO usercontent 
    (`userid`, `type`, `url`) VALUES 
    ('$userid', '$type', '$directory')"); 
    echo 'Uploaded'; 
    echo "<img src='".$directory."'/>"; 
    } else { 
    echo 'There was an error moving the file.'; 
    } 

    chmod($directory, 0644); 
} 


?> 

答えて

1

ここでの本当の問題は、ファイルが最初の場所に適切な権限を書かされていないことです。

アップロードしたファイルのグローバル読み取り/書き込みを設定することで、セキュリティ上の問題が発生しやすいので、この設定には注意が必要です。通常のセキュリティ上の注意を払い、おそらくパブリックディレクトリではなくウェブユーザーだけに読み取り/書き込みを設定します。オンデマンドで実行するジョブを設定することも、セキュリティの脅威を減らすためにこれらを移動する分単位で実行することもできます。ドキュメント内のコメントから

、迅速なハウツー本で:ドキュメント内

<?php 
// files will create as -rw------- 
umask(0077); 

// create a file, eg fopen() 

// give access: -rw-r--r-- 
chmod('/path/to/file', 0644); 
?> 

詳細情報:

http://php.net/manual/en/function.umask.php

+0

ありがとうございます!しかし、これは既存のファイルに対するものですが、私はSSH経由でそのアクセス権を変更しましたが、拒否されたアクセス権には影響しません。しかし、これはrwのpriveligesに影響を与えるために非常に便利になるだろう。私は、既存のPHPスクリプトにumaskとCHMODを入れて、ファイルアップロード(画像ファイル)を許可するかどうかを調べるつもりです –

+0

オリジナルの投稿をチェックして、間違ったことを確認してください。私はまだパーミッションを拒否されました。 –

-1

あなたはおそらくPHPのbuilt inchmod()機能を使用することができます。

これにより、ファイルを転送するフォルダのアクセス許可を変更することができます。ファイルが移動されたら、いつでもchmodを戻すことができます。

また、誰かが自分のサイトにアクセスする前に、手動でフォルダを手動でchmodできます。

サーバー内にあるファイルとフォルダのアクセス許可を扱うときは注意してください。これらのファイルは外部からアクセスされる可能性があり、非常にオープンな権限(例えば0777)を設定すると、スクリプトや誰でもそのフォルダ内のファイルを作成、削除、変更することができます。

+0

ありがとうございました、PhilWinkleの投稿と私のオリジナルを参考にしてください。 –

関連する問題