我已經查看了這裏的其他五個類似的問題,他們都沒有能夠解決我的問題。我正在上傳一個1657字節的CSV文件。PHP文件上傳/ move_uploaded_file不工作,不像其他問題
下面是我的php.ini文件
upload_max_filesize = 2M
post_max_size = 8M
$file = $_FILES['csv'];
if (!isset($file)) {
halt(HTTP_NOT_FOUND, 'This page could not be found on the web server');
}
if (substr(strrchr($file['name'], '.'), 1) != 'csv') {
halt(500, 'Sorry but please upload a CSV file next time!');
}
if ($file['error'] != '0') {
die('An error occurred during upload.<br />Error: ' . $file['error']);
}
$file_loc = '/home/x/tmp/up/' . basename($file['tmp_name']) . '.csv';
if (file_exists('/home/x/tmp/up/')) {
echo 'the directory exists....<br/>';
}
if (file_exists($file['tmp_name'])) {
echo 'tmp file exists<br/>';
echo filesize($file['tmp_name']) . 'b<br/>';
}
if (move_uploaded_file($file['tmp_name'], $file_loc)) {
echo 'Uploaded to: ' . $file_loc;
} else {
echo 'something went wrong!' . print_r($_FILES['csv'], true);
echo '<br />Upload Max Size: ' . ini_get('upload_max_filesize');
echo '<br />POST Max Size: ' . ini_get('post_max_size');
}
這裏有些價值觀是當我上傳的文件生成的輸出:
the directory exists....
tmp file exists
1657b
something went wrong!Array ([name] => hm.csv [type] => application/vnd.ms-excel [tmp_name] => /tmp/php72p1VP [error] => 0 [size] => 1657)
Upload Max Size: 2M
POST Max Size: 8M
我已經在「com」下看過PHP.net星期一陷阱「文章沒有導致任何東西被固定。任何人都可以看到有什麼不對或給我一些提示?
檢查目錄的權限。具體而言,請檢查Web服務器是否具有目錄的寫入權限。 – Corbin
您的PHP用戶是否有正確的文件權限來訪問您要將文件寫入的目錄? – Gareth
PHP爲$ _FILES數組中的'tmp_name'參數創建一個隨機值。您應該**不要**將其作爲永久值用於最終存儲此文件的任何位置。並且不要使用字符串操作來解析文件名,也不要相信用戶文件名是準確的。一個.CSV文件可以被稱爲.txt,並且仍然是完全有效的。同樣,敵對用戶可以將'nastygarbage.exe'重命名爲'gooddata.csv',並通過您的「安全」系統。 –