2011-07-30 12 views
0

私は.htmlページと.phpページにフォームを作成し、画像のファイルパスと共にフォームからsomデータを保存しました。問題は、ルートフォルダからroot/backwebに移動するときです。 backwebフォルダに新しいuploadsフォルダを作成し、簡略化のためconn.inc.phpファイルをバックウェブフォルダにコピーしました。PHPはフォルダ内で動作しますが、別のファイルでは動作しません

私はroot folerから実行すると「Releasen sparades!」と表示されます。 (Release saved)しかし、私はそれを "Ogiltig filtyp!..."(無効なファイルタイプ)と言うバックウェブサーバーから実行します。何か案は?

ここでは、コードです:

<? 
require_once 'conn.inc.php'; 

if (($_FILES["cover"]["type"] == "image/gif") 
|| ($_FILES["cover"]["type"] == "image/png") 
|| ($_FILES["cover"]["type"] == "image/jpeg") 
|| ($_FILES["cover"]["type"] == "image/pjpeg")) 
    { 
    if ($_FILES["cover"]["error"] > 0) 
    { 
    echo "Return Code: " . $_FILES["cover"]["error"] . "<br />"; 
    } 
    else 
    { 

    if (file_exists("uploads/" . $_FILES["cover"]["name"])) 
     { 
     echo $_FILES["cover"]["name"] . " finns redan på servern. "; 
     } 
    else 
     { 
     move_uploaded_file($_FILES["cover"]["tmp_name"], 
     "uploads/" . $_FILES["cover"]["name"]); 
     $cover = "uploads/" . $_FILES["cover"]["name"]; 
     } 
    } 
    } 
else 
    { 
    echo "Ogiltig filtyp! Endast bilder &auml;r till&aring;tna (.jpg, .png och .gif)</br> 
    <a href=\"uploadform.html\">F&ouml;rs&ouml;k igen</a>"; 
    } 


$band = $_REQUEST["band"]; 
$title = $_REQUEST["title"]; 
$catnum = $_REQUEST["catnum"]; 
$format = $_REQUEST["format"]; 

$query = "INSERT INTO releases (band,title,catnum,format,cover) VALUES ('$band','$title','$catnum','$format','$cover')"; 

$result = mysql_query($query); 
    if ($result == NULL) 
    { 
     echo "N&aring;got gick fel, releasen sparades ej!"; 
     ?> 
     <br/> 
     <br/> 
     <a href="editreleases.php">Försök igen!</a> 
     <? 
    } 
    else 
    { 
     echo "Releasen sparades!"; 
    } 
?> 
+0

おそらく有効でないと思われるファイルタイプはどのファイルタイプですか? – Svish

+0

これは奇妙なことですが、ルートとバックウェブフォルダでテストすると、同じファイルがアップロードされます。それはファイルタイプを言いません。 – Alex

答えて

0

音フォルダのアクセス権が非ルートフォルダに

+0

同じフォルダを使用しても動作すると思いますか?さて、そうする正しい方法は何ですか? このようにしますか? if(file_exists( "../ uploads /"。$ _FILES ["cover"] ["name"])) – Alex

+0

あなたが正しいと思います!私は他のフォルダと他のconn.inc.phpを使用するようにコードを編集し、魔法のように動作し始めました! – Alex

+1

それは実際に私が意味するものではありませんが、それがうまくいったら - 素晴らしい!私は「chmod 777」(またはWindows上にいる場合は誰にでも読み取り権限を与える)を適用して、それが何か変わるかどうかを確認しました。 – trailmax

1

にファイルにアクセスするためにPHPのために設定されていないようにあなたがあなたのディレクトリへの正しいパスを与える必要があり、

すなわち
if (file_exists("../uploads/" . $_FILES["cover"]["name"])) 

if (file_exists("uploads/" . $_FILES["cover"]["name"])) 
+0

私が前に書いたように、わかりやすくするために、私はバックウェブフォルダ内に新しいアップロードフォルダを作った。同じコードがまだ動作しません!最初のif文で何かが間違っています。 – Alex

+0

'require_once '../ conn.inc.php';'はどうでしょうか? –

+0

私が書いたように、あまりにもそれをコピー!その前はページが空白だった。私はエラーメッセージを受け取った後。 – Alex

0

file_existsの代わりにis_uploaded_fileを使用する必要がありますか?ファイルのパスには$_FILES["cover"]["tmp_name"]を使用します。 PHPマニュアルからの例:

さらに、@ trailmaxの注釈として、PHPがアップロードされたフォルダに実際にアクセスできることを確認してください。

+0

あなたは本当にコードに大きな変更を加えなければならないと思うのですが、rootからroot/backwebに移動するだけです。 – Alex

+0

おそらくそうではありませんが、たとえば:tmp_nameにファイルパスを手動で作成する必要があるときに、ファイルパスを手動で作成する必要があるのはなぜですか?いずれにせよ、あなたの問題は誤った設定であるようです:) – Svish

関連する問題