在使用Zend Sutdio10.6設(shè)置斷點(diǎn)并調(diào)試上面這段PHP代碼時(shí)我發(fā)現(xiàn)“if (move_uploaded_file($_FILES['screenshot']['tmp_name'], $target)) {”這行代碼里面的代碼塊沒(méi)有執(zhí)行,于是查看了超全局變量$_FILES['screenshot']['tmp_name']的值為空,然后我在這行代碼前以JSON格式打印出$_FILES變量的值,如下:<\/span>{\"screenshot\":{\"name\":\"Penguins.jpg\",\"type\":\"\",\"tmp_name\":\"\",\"error\":2,\"size\":0}}<\/pre><\/p>
相應(yīng)的運(yùn)行截圖如下:<\/span><\/span><\/p>
<\/span><\/p>然后我查詢(xún)$_FILES['screenshot']['error']為2,上網(wǎng)查詢(xún)了一下,關(guān)于$_FILES超級(jí)全局變量的介紹<\/span>大體如下:<\/span><\/span><\/p><\/span><\/span><\/p>PHP編程語(yǔ)言中的常見(jiàn)的$_FILES系統(tǒng)函數(shù)用法有:<\/span><\/p>$_FILES['myFile']['name'] 顯示客戶(hù)端文件的原名稱(chēng)。<\/span><\/p>$_FILES['myFile']['type'] 文件的 MIME 類(lèi)型,例如\"image\/gif\"。<\/span><\/p>$_FILES['myFile']['size'] 已上傳文件的大小,單位為字節(jié)。<\/span><\/p>$_FILES['myFile']['tmp_name'] 儲(chǔ)存的臨時(shí)文件名,一般是系統(tǒng)默認(rèn)。<\/span><\/p>$_FILES['myFile']['error'] 該文件上傳相關(guān)的錯(cuò)誤代碼。以下為不同代碼代表的意思:<\/span><\/p>0:文件上傳成功。<\/span><\/p>1:超過(guò)了文件大小php.ini中即系統(tǒng)設(shè)定的大小。<\/span><\/p>2:超過(guò)了文件大小<\/span><\/p>MAX_FILE_SIZE 選項(xiàng)指定的值。<\/span><\/p>3;:文件只有部分被上傳。<\/span><\/p>4:沒(méi)有文件被上傳。<\/span><\/p>5:上傳文件大小為0。<\/span><\/p>
另外,查詢(xún)PHP參考手冊(cè)關(guān)于move_uploaded_file函數(shù)的介紹如下:<\/span><\/p><\/p>
move_uploaded_file(PHP 4 >= 4.0.3, PHP 5)move_uploaded_file — 將上傳的文件移動(dòng)到新位置說(shuō)明bool move_uploaded_file ( string $filename , string $destination )本函數(shù)檢查并確保由 filename 指定的文件是合法的上傳文件(即通過(guò) PHP 的 HTTP POST 上傳機(jī)制所上傳的)。如果文件合法,則將其移動(dòng)為由 destination 指定的文件。 這種檢查顯得格外重要,如果上傳的文件有可能會(huì)造成對(duì)用戶(hù)或本系統(tǒng)的其他用戶(hù)顯示其內(nèi)容的話(huà)。 參數(shù)filename上傳的文件的文件名。 destination移動(dòng)文件到這個(gè)位置。 返回值成功時(shí)返回 TRUE。 如果 filename 不是合法的上傳文件,不會(huì)出現(xiàn)任何操作, move_uploaded_file() 將返回 FALSE。 如果 filename 是合法的上傳文件,但出于某些原因無(wú)法移動(dòng),不會(huì)出現(xiàn)任何操作, move_uploaded_file() 將返回 FALSE。此外還會(huì)發(fā)出一條警告。 <\/pre>
<\/p>
范例<\/h3>
<\/p>
<\/p>
Example #1 Uploading multiple files<\/strong><\/p><\/p> $error) { if ($error == UPLOAD_ERR_OK) { $tmp_name = $_FILES[\"pictures\"][\"tmp_name\"][$key]; $name = $_FILES[\"pictures\"][\"name\"][$key]; move_uploaded_file($tmp_name, \"$uploads_dir\/$name\"); }}?> <\/pre>原因終于找到了,是因?yàn)槲疑蟼髁艘粋€(gè)超過(guò)32768Bytes即32KB大小的Penguins.jpg文件導(dǎo)致出現(xiàn)<\/span>$_FILES['screenshot']['error']為2的錯(cuò)誤,并且$_FILES['screenshot']['tmp_name']為空,move_uploaded_file($_FILES['screenshot']['tmp_name'], $target)函數(shù)調(diào)用時(shí)返回FALSE,if (move_uploaded_file($_FILES['screenshot']['tmp_name'], $target)) {?
? ...
?}代碼塊沒(méi)有執(zhí)行。<\/span><\/span>
? ? ?<\/p>\n
\n \n \n \n \n <\/div>"}
?
??? ??
PHP ????
PHP上傳文件超過(guò)文件最大限制羅致無(wú)法上傳成功
PHP上傳文件超過(guò)文件最大限制羅致無(wú)法上傳成功
Jun 13, 2016 pm 12:01 PM
gt
lt
name
quot
screenshot
PHP上傳文件超過(guò)文件最大限制導(dǎo)致無(wú)法上傳成功
? ? ?最近在學(xué)習(xí)《HeadFirst PHP & MySQL》一書(shū)的第5章“使用存儲(chǔ)在文件中的數(shù)據(jù)”,做一個(gè)文件上傳的應(yīng)用時(shí),出現(xiàn)了錯(cuò)誤,就是文件無(wú)法成功上傳。這個(gè)問(wèn)題困擾了我很久,不過(guò)還好最后終于解決了。原因是我上傳的圖片文件大小超過(guò)了HTML 表單中MAX_FILE_SIZE 選項(xiàng)指定的值32768Bytes即32KB導(dǎo)致無(wú)法上傳成功。
? ? 我使用了XAMPP(Apache + MySQL + PHP + Perl)集成開(kāi)發(fā)包和Zend Studio 10.6作為PHP IDE開(kāi)發(fā)環(huán)境,另外關(guān)于PHP調(diào)試我采用了XDebug,在Zend Studio10.6中配置Xdebug的PHP調(diào)試環(huán)境我參考了博文Zend Studio 10.5 與 XDebug 調(diào)試| Zend Debugger 說(shuō)明 Drupal 源代碼 (一)一文。
????? 相應(yīng)的文件上傳示例PHP代碼addscore.php如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Guitar Wars - Add Your High Score</title> <link rel="stylesheet" type="text/css" href="style.css" /></head><body> <h2>Guitar Wars - Add Your High Score</h2><?php require_once 'appvars.php'; require_once 'connectvars.php'; if (isset($_POST['submit'])) { // Grab the score data from the POST $name = $_POST['name']; $score = $_POST['score']; $screenshot = $_FILES['screenshot']['name']; if (!empty($name) && !empty($score) && !empty($screenshot)) { // Move the file to the target upload folder $target = GW_UPLOADPATH . $screenshot; echo json_encode($_FILES); if (move_uploaded_file($_FILES['screenshot']['tmp_name'], $target)) { // Connect to the database $dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME) or die('Error Connecting to MySQL Database!'); // Write the data to the database $query = "INSERT INTO guitarwars VALUES (0, NOW(), '$name', '$score','$screenshot')"; mysqli_query($dbc, $query) or die('Error querying database;'); // Confirm success with the user echo '<p>Thanks for adding your new high score!</p>'; echo '<p><strong>Name:</strong> ' . $name . '<br />'; echo '<strong>Score:</strong> ' . $score; echo '<img src="/static/imghw/default1.png" data-src="/img/2014/07/09/143017574.jpg" class="lazy" alt="Score image" /></p>'; echo '<p><a href="index.php"><< Back to high scores</a></p>'; // Clear the score data to clear the form $name = ""; $score = ""; $screenshot = ""; mysqli_close($dbc); } } else { echo '<p class="error">Please enter all of the information to add your high score.</p>'; } }?> <hr /> <form method="post" enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF']; ?>"> <input type="hidden" name="MAX_FILE_SIZE" value="32768" /> <label for="name">Name:</label> <input type="text" id="name" name="name" value="<?php if (!empty($name)) echo $name; ?>" /><br /> <label for="score">Score:</label> <input type="text" id="score" name="score" value="<?php if (!empty($score)) echo $score; ?>" /><br /> <label for="screeshot">ScreenShot</label> <input type="file" id="screenshot" name="screenshot" /> <hr /> <input type="submit" value="Add" name="submit" /> </form></body> </html>
在使用Zend Sutdio10.6設(shè)置斷點(diǎn)并調(diào)試上面這段PHP代碼時(shí)我發(fā)現(xiàn)“if (move_uploaded_file($_FILES['screenshot']['tmp_name'], $target)) {”這行代碼里面的代碼塊沒(méi)有執(zhí)行,于是查看了超全局變量$_FILES['screenshot']['tmp_name']的值為空,然后我在這行代碼前以JSON格式打印出$_FILES變量的值,如下:{"screenshot":{"name":"Penguins.jpg","type":"","tmp_name":"","error":2,"size":0}}
相應(yīng)的運(yùn)行截圖如下:

然后我查詢(xún)$_FILES['screenshot']['error']為2,上網(wǎng)查詢(xún)了一下,關(guān)于$_FILES超級(jí)全局變量的介紹大體如下:
PHP編程語(yǔ)言中的常見(jiàn)的$_FILES系統(tǒng)函數(shù)用法有:$_FILES['myFile']['name'] 顯示客戶(hù)端文件的原名稱(chēng)。$_FILES['myFile']['type'] 文件的 MIME 類(lèi)型,例如"image/gif"。$_FILES['myFile']['size'] 已上傳文件的大小,單位為字節(jié)。$_FILES['myFile']['tmp_name'] 儲(chǔ)存的臨時(shí)文件名,一般是系統(tǒng)默認(rèn)。$_FILES['myFile']['error'] 該文件上傳相關(guān)的錯(cuò)誤代碼。以下為不同代碼代表的意思:0:文件上傳成功。1:超過(guò)了文件大小php.ini中即系統(tǒng)設(shè)定的大小。2:超過(guò)了文件大小MAX_FILE_SIZE 選項(xiàng)指定的值。3;:文件只有部分被上傳。4:沒(méi)有文件被上傳。5:上傳文件大小為0。另外,查詢(xún)PHP參考手冊(cè)關(guān)于move_uploaded_file函數(shù)的介紹如下:
move_uploaded_file(PHP 4 >= 4.0.3, PHP 5)move_uploaded_file — 將上傳的文件移動(dòng)到新位置說(shuō)明bool move_uploaded_file ( string $filename , string $destination )本函數(shù)檢查并確保由 filename 指定的文件是合法的上傳文件(即通過(guò) PHP 的 HTTP POST 上傳機(jī)制所上傳的)。如果文件合法,則將其移動(dòng)為由 destination 指定的文件。 這種檢查顯得格外重要,如果上傳的文件有可能會(huì)造成對(duì)用戶(hù)或本系統(tǒng)的其他用戶(hù)顯示其內(nèi)容的話(huà)。 參數(shù)filename上傳的文件的文件名。 destination移動(dòng)文件到這個(gè)位置。 返回值成功時(shí)返回 TRUE。 如果 filename 不是合法的上傳文件,不會(huì)出現(xiàn)任何操作, move_uploaded_file() 將返回 FALSE。 如果 filename 是合法的上傳文件,但出于某些原因無(wú)法移動(dòng),不會(huì)出現(xiàn)任何操作, move_uploaded_file() 將返回 FALSE。此外還會(huì)發(fā)出一條警告。
范例
Example #1 Uploading multiple files
<?php$uploads_dir = '/uploads';foreach ($_FILES["pictures"]["error"] as $key => $error) { if ($error == UPLOAD_ERR_OK) { $tmp_name = $_FILES["pictures"]["tmp_name"][$key]; $name = $_FILES["pictures"]["name"][$key]; move_uploaded_file($tmp_name, "$uploads_dir/$name"); }}?>
原因終于找到了,是因?yàn)槲疑蟼髁艘粋€(gè)超過(guò)32768Bytes即32KB大小的Penguins.jpg文件導(dǎo)致出現(xiàn)$_FILES['screenshot']['error']為2的錯(cuò)誤,并且$_FILES['screenshot']['tmp_name']為空,move_uploaded_file($_FILES['screenshot']['tmp_name'], $target)函數(shù)調(diào)用時(shí)返回FALSE,if (move_uploaded_file($_FILES['screenshot']['tmp_name'], $target)) {?
? ...
?}代碼塊沒(méi)有執(zhí)行。? ? ?
? ????? ??
? ?? ??? ????? ???? ??? ??????, ???? ?????? ????. ? ???? ?? ???? ?? ??? ?? ????. ???? ??? ???? ???? ??? ?? admin@php.cn?? ?????.
??? GT3 Pro? GT4? ???? ??????
Dec 29, 2023 pm 02:27 PM
?? ????? ??? ??? ??? ? Huawei ???? ???? ???. ? ? Huawei GT3pro? GT4? ?? ?? ?? ?????. ? ??? ???? ????? ???? ????. Huawei GT3pro? GT4? ???? ?????? 1. ?? GT4: 46mm? 41mm, ??? ?? ?? + ????? ?? ?? + ???? ?? ?? ????. GT3pro: 46.6mm ? 42.9mm, ??? ???? ?? + ??? ??/??? ?? + ??? ? ????. 2. ??? GT4: ?? Huawei Truseen5.5+ ????? ???? ??? ? ??????. GT3pro: ECG ???, ?? ? ??? ??
??: Windows 11?? ?? ??? ???? ??
Aug 24, 2023 am 09:48 AM
Windows 11?? ?? ??? ???? ?? ?? ??? ?? ??? ???? ??? ???? ?? ? ??? ? ? ????. ?? ??? ??? ???? ?? ?? ??? ??? ????. ?? ???? ?? ????. ??? ?? ?? ??? ??? ????. ??? ?? ????: ?? ??? ?? ? ???? ?? ?? ????? ????? ? ????. ??? ??? ????: ???? ?? ????? ?? ??? ??? ? ????. ?? ?? ????? ??: ?? ?? ?? ?? ????? ?? ??? ??? ? ????. ???? ???????. ????? ???? ? ??? ?? ? ??? ??? ? ????. ? ??? ???? ????? ???? ??? ?? ??? ???? ????. 1. Windows ? Microsoft Store ? ????
iPhone?? App Store ??? ??? ? ?? ??? ???? ??
Jul 29, 2023 am 08:22 AM
1?: ?? ?? ?? ?? Apple ??? ?? ??: ??? ???? ???? ?? ?? ???? ??? ?????. ??? ??? ??? ?? ?? ?? ?? ????. Apple ??? ????? ?? ????. Apple? ??? ?? ???? ???? AppStore? ??? ????? ?????. ??? ?? ?? Apple? ??? ????? ???? ?????. ??? ?? ??: "AppStore? ??? ? ??" ??? ??? ?? ???? ?? ??? ? ???? ??? ??? ????? ??????. Wi-Fi? ??? ??? ?? ????? ???? ??? ???? ???(?? > ??? > ???? ?? ??? > ??). iOS ??? ???????.
????? ?? ??????
Feb 27, 2023 am 10:48 AM
????? ?? ???? ?? ?????. F12? ???? ????? ?? ? ????. ???? bmp ?????. bmp ??? Windows ?? ??? ?? ??? ?? ???? ??? Windows ?? ?????? ??? ? ????.
php提交表單通過(guò)后,彈出的對(duì)話(huà)框怎樣在當(dāng)前頁(yè)彈出,該如何解決
Jun 13, 2016 am 10:23 AM
php提交表單通過(guò)后,彈出的對(duì)話(huà)框怎樣在當(dāng)前頁(yè)彈出php提交表單通過(guò)后,彈出的對(duì)話(huà)框怎樣在當(dāng)前頁(yè)彈出而不是在空白頁(yè)彈出?想實(shí)現(xiàn)這樣的效果:而不是空白頁(yè)彈出:------解決方案--------------------如果你的驗(yàn)證用PHP在后端,那么就用Ajax;僅供參考:HTML code
watch4pro? ? ????, ??? gt????
Sep 26, 2023 pm 02:45 PM
Watch4pro? gt? ?? ?? ?? ??? ?? ??? ????? ??? ????. ???? ??, ???, ??? ??? ??? ?? ? ?? ??? ??? ??? ??? Watch 4 Pro? ? ??? ? ????. ?? ?? ?? ??? ?? ??? ??? ???? ??? ? ?? ??? ???? ?? GT ???? ? ??? ? ????. ?? ??? ??? ??? ??, ???? ?? ????? ???. ??? ??? ? ??? ? ????, ??? ??? ?? ??? ??? ???? ?? ??? ??? ?? ?? ????.
iPadOS 17.4? iPad ??? ??? ????? ??
Mar 21, 2024 pm 10:31 PM
iPadOS 17.4? iPad ??? ??? ????? ?? ??? ?? ??? ??? ?? ??? ???? iPad? ?? ????. iPad? ???? ?? ?? ????? ?????? ???? ???. iPadOS 17.4?? ??? ?? ??? ?? ??? ? ?? ?? ?? ??? ?? ??? ????. ? ?? ???? ??? ??? ??? ???? ?? ??? iPad ?? ??? ??? ???? ??? ??? ???? ??? ???? ??? ??? ? ???? ??? ? ??? ?? ????. ??? ??? ??? ?????? ??? ??? ?? ??? ?? ??? ?? ??? ?? ????? ?? ?? ???? ???? ??? ? ????. ?? ??? ??? ??
PHP? ??? ?? ? ??? ??? ?? ????
Nov 24, 2022 am 09:56 AM
?? ??? ??? ID ?? ??? ????? ?? ??? ? ?? ??? PHP? ??? ?? ? ????. ?? ??: 1. ?? ?? ??? ??? ??? ??? ????? ??????. 2. ??? ??? ? ?? ??? ??????. ID? ????? ??? ???? ????. 3. ?? ?? ?? ???? ?? "join(',', $__POST['name'])"? ???? ???? ??? ? ????.
See all articles