2016-03-26 7 views
1

現在、私のPHPスクリプトが現在動作していない理由をデバッグしようとしています。基本的には、エンドユーザーが新しいグループ名を作成し、2つの異なるファイルのうちの1つをアップロードするオプションを持つWebフォームがあります。html + phpアップロードフォームがファイルをアップロードしていません

HTML:

<form method="post" action="/php/create.php" enctype="multipart/form-data"> 
<div class="form-group"> 
<label for="customerName">Customer Name:</label> 
<input type="text" class="form-control" id="foldername" name="foldername" placeholder="Customer Name"> 
</div> 
<div class="form-group"> 
<label for="healthCheckOutput">HealthCheck Results</label> 
<input type="file" id="healthCheckFile"> 
</div> 
<div class="form-group"> 
<label for="SANUpload">Appliance Data</label> 
<input type="file" id="SANUpload" name="SANUpload"> 
</div> 
<button type="submit" class="btn btn-default">Submit</button> 
</form> 

PHP:PHPから

<?php 
ini_set('display_errors',1); 
error_reporting(E_ALL|E_STRICT); 
//Create Customer Folder 
$folder = $_POST['foldername']; 

$dirPath = '../customers/'.$folder; 
if (!mkdir($dirPath, 0750, true)) { 
    die('Failed to create customer folders...current customer name already exists'); 
} 

//Upload the file and move it to the correct folders for processing 
//$target_dir = "/uploads/"; 
//$target_file = $target_dir . basename($_FILES["SANUpload"]["name"]) 

$uploaddir = "uploads/"; 
$uploadfile = $uploaddir . basename($_FILES['SANUpload']['name']); 

echo '<pre>'; 
if (move_uploaded_file($_FILES['SANUpload']['tmp_name'], $uploadfile)){ 
echo "Success.\n"; 
} else { 
echo "Failure.\n"; 
} 

echo 'Here is some more debugging info:'; 
print_r($_FILES); 
print "</pre>"; 
?> 

デバッグ:

Warning: move_uploaded_file(uploads/test2.csv): failed to open stream: No such file or directory in /var/www/html/php/create.php on line 26 

Warning: move_uploaded_file(): Unable to move '/tmp/php8E2y8j' to 'uploads/test2.csv' in /var/www/html/php/create.php on line 26 

Failure. 
Here is some more debugging info:Array 
(
[SANUpload] => Array 
    (
     [name] => test2.csv 
     [type] => text/csv 
     [tmp_name] => /tmp/php8E2y8j 
     [error] => 0 
     [size] => 58242 
    ) 

) 

私は致しておりませんことをその何か簡単な確信しています。これは、公開アプリケーションではなく、小さなローカルホスト仮想アプライアンスであることに注意してください。

+0

は、すでに 'uploads'ディレクトリが存在しないことを訴えています –

+0

作成したいくつかのフォルダにファイルをアップロードしてみてください。 'uploads'ディレクトリは、スクリプトを含むフォルダのサブディレクトリですか、それとも別の場所ですか?完全なパスを使用してみてください。 – Barmar

+0

そのルートの下にあるフォルダ。私は完全なパスを入れても、私はまだそのエラーを取得します。私はそれを試して移動することができます。 @Barmarポイントにはファイルが存在し、そこに存在し、書き込み可能です - スクリプトがそれを検出していません。私は何が欠けているのか理解できませんでした。 – Jared

答えて

0

私はオンラインでPHPのアップロードプロセスのより詳細な例を見つけました。これにより、問題が解決されました。

これは私が今使っているものです。完全に動作します。

PHP:

define("UPLOAD_DIR", "/var/www/html/uploads/"); 

if (!empty($_FILES["SANUpload"])) { 
$myFile = $_FILES["SANUpload"]; 

if ($myFile["error"] !== UPLOAD_ERR_OK) { 
    echo "<p>An error occurred.</p>"; 
    exit; 
} 

// ensure a safe filename 
$name = preg_replace("/[^A-Z0-9._-]/i", "_", $myFile["name"]); 

// don't overwrite an existing file 
$i = 0; 
$parts = pathinfo($name); 
while (file_exists(UPLOAD_DIR . $name)) { 
    $i++; 
    $name = $parts["filename"] . "-" . $i . "." . $parts["extension"]; 
} 

// preserve file from temporary directory 
$success = move_uploaded_file($myFile["tmp_name"], 
    UPLOAD_DIR . $name); 
if (!$success) { 
    echo "<p>Unable to save file.</p>"; 
    exit; 
} 
// set proper permissions on the new file 
chmod(UPLOAD_DIR . $name, 0644); 
} 

これは私がHTMLですでにセットアップ持っているものと一緒にいます。
これは細部まで行き渡っており、非常に多くの作業コピーが文書化されています。

http://www.sitepoint.com/file-uploads-with-php/

関連する問題