欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

php上傳大文件失敗的原因及應(yīng)對策略

 更新時間:2021年07月01日 17:28:13   投稿:lijiao  
這篇文章主要介紹了php上傳大文件失敗的原因及應(yīng)對策略的相關(guān)資料,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

為什么上傳大文件總是失敗,但是上傳小文件就沒有問題。小編也不得其解,網(wǎng)上搜其原因,整理了一篇關(guān)于php上傳大文件失敗的原因和解決辦法的文章,分享給大家。

下面分別是各種原因以及解決辦法:

第1種情況:文件上傳時存放文件的臨時目錄必須是開啟的并且是 PHP 進程所有者用戶可寫的目錄。如果未指定則 PHP 使用系統(tǒng)默認值。
php.ini文件中upload_tmp_dir用來說明PHP上傳的文件放置的臨時目錄,要想上傳文件,得保證服務(wù)器沒有關(guān)閉臨時文件并對該文件夾有寫入的權(quán)限。

第2種情況:max_execution_time 的值必須足夠大。變量 max_execution_time 設(shè)置了在強制終止腳本前PHP等待腳本執(zhí)行完畢的時間,此時間以秒計算。當(dāng)腳本進入了一個無限循環(huán)狀態(tài)時此變量非常有用。然而,當(dāng)存在一個需要很長時間完成的合法活動時(例如上傳大型文件),這項功能也會導(dǎo)致操作失敗。在這樣的情況下必須考慮將此變量值增大,以避免PHP在腳本正在執(zhí)行某些重要過程的時候?qū)⒛_本關(guān)閉,例如設(shè)置為 90 秒。
max_execution_time = 90
注意在php函數(shù)中還有個set_time_limit 函數(shù),和以上這個設(shè)置的作用是相同的,這兩者的區(qū)別就是 以上是在 php.ini 文件中設(shè)置的,而set_time_limit 是寫在php文件中的。所以也可以通過在頁面中用 set_time_limit 設(shè)置程序的最長執(zhí)行時間,比如無限制即:set_time_limit(0);

第3種情況:file_uploads = On 默認值為on,意思是允許通過 HTTP 進行文件上傳,此選項不能設(shè)置為OFF。

第4種情況:upload_max_filesize = 2M 設(shè)定文件上傳的大小的最大值,php.ini配置文件中的默認文件上傳大小為2M,php初學(xué)者容易犯的一個錯誤是在編寫文件上傳功能時通過設(shè)置上傳文件最大大小的表單區(qū)域,即允許上傳文件的最大值,max_file_size(隱藏值域)的值來規(guī)定上傳文件的大小,其實一般別人可以繞過這個值,所以安全起見,最好是在 php.ini 配置文件中配置 upload_max_filesize 選項,設(shè)定文件上傳的大小。默認 upload_max_filesize = 2M,即文件上傳的大小為2M,如果你想上傳超過8M的文件,比如20M,你必須設(shè)定upload_max_filesize = 20M。

第5種情況:post_max_size 這個值也必須足夠大。這個變量也是一個同表單提交相關(guān)的變量,它限制的是客戶端通過POST方法進行一次表單提交時PHP程序所能夠接收的最大數(shù)據(jù)量。一般情況下,將此值的值設(shè)置的比 upload_max_filesize 略大即可,比如要上傳20MB的文件,此值可以設(shè)置為 21MB。

第6種情況:max_input_time 此變量可以以秒為單位對通過POST、GET以及PUT方式接收數(shù)據(jù)時間進行限制。如果應(yīng)用程序所運行環(huán)境處在網(wǎng)絡(luò)比較慢的情況下,則需要增加此值以增大接收數(shù)據(jù)所需要的時間,比如將此值設(shè)置為 90秒。
max_input_time = 90

第7種情況:memory_limit 也必須足夠大,為了避免正在運行的腳本大量使用系統(tǒng)可用內(nèi)存,PHP允許定義內(nèi)存使用限額。通過memory_limit變量來指定單個腳本程序可以使用的最大內(nèi)存容量。變量memory_limit的值應(yīng)當(dāng)適當(dāng)大于post_max_size的值。

第8種情況:另外如果你的主機是 nginx 操作系統(tǒng)的話,如果以上操作都不行的話,記得在nginx 的配置文件里面加上 client_max_body_size 20m; 這樣一句,即表示最大允許上傳20MB,具體根據(jù)自己的情況來。我的nginx 配置文件的位置在 /usr/local/nginx/conf/nginx.conf。

閱讀完這篇文章大家應(yīng)該大概知道大文件上傳失敗的原因了吧,希望本文可以為大家提供一些思路,更好的去解決類似問題。

相關(guān)文章

  • php+ajax實現(xiàn)無刷新分頁的方法

    php+ajax實現(xiàn)無刷新分頁的方法

    這篇文章主要介紹了php+ajax實現(xiàn)無刷新分頁的方法,詳細講述了數(shù)據(jù)庫的創(chuàng)建、Ajax文件的實現(xiàn)及PHP調(diào)用方法,需要的朋友可以參考下
    2014-11-11
  • PHP操作Mongodb封裝類完整實例

    PHP操作Mongodb封裝類完整實例

    這篇文章主要介紹了PHP操作Mongodb封裝類,結(jié)合完整實例形式分析了php封裝的針對MongoDB數(shù)據(jù)庫常見的基本配置、連接、增刪改查、集合等操作定義與使用方法,需要的朋友可以參考下
    2018-06-06
  • PHP獲取欄目的所有子級和孫級欄目的ID號示例

    PHP獲取欄目的所有子級和孫級欄目的ID號示例

    這篇文章主要介紹了PHP獲取欄目的所有子級和孫級欄目的ID號的具體實現(xiàn),需要的朋友可以參考下
    2014-04-04
  • php驗證碼的制作思路和實現(xiàn)方法

    php驗證碼的制作思路和實現(xiàn)方法

    這篇文章主要介紹了php驗證碼的制作思路和實現(xiàn)方法,我們不能盲目的去實現(xiàn)php生成驗證碼,更應(yīng)該了解php驗證碼的基本原理,真正的掌握php驗證碼的實現(xiàn)方法,需要的朋友可以參考下
    2015-11-11
  • 深入解析PHP的引用計數(shù)機制

    深入解析PHP的引用計數(shù)機制

    本篇文章是對PHP中的引用計數(shù)機制進行了詳細的分析介紹,需要的朋友參考下
    2013-06-06
  • Laravel中數(shù)據(jù)庫遷移操作的示例詳解

    Laravel中數(shù)據(jù)庫遷移操作的示例詳解

    這篇文章主要為大家詳細介紹了Laravel實現(xiàn)數(shù)據(jù)庫遷移操作的相關(guān)知識,文中的示例代碼講解詳細,具有一定的學(xué)習(xí)價值,感興趣的小伙伴可以了解一下
    2023-02-02
  • PHP中冒號、endif、endwhile、endfor使用介紹

    PHP中冒號、endif、endwhile、endfor使用介紹

    下面的一些用法,對于相當(dāng)一部分PHP愛好者來說根本沒見過啊,這些是什么東西呢?
    2010-04-04
  • PHP7下協(xié)程的實現(xiàn)方法詳解

    PHP7下協(xié)程的實現(xiàn)方法詳解

    最近在學(xué)習(xí)中遇到了協(xié)程,發(fā)現(xiàn)這類文章介紹的較少,所以下面這篇文章主要給大家介紹了關(guān)于PHP7下協(xié)程的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-12-12
  • PHP 字符串加密函數(shù)(在指定時間內(nèi)加密還原字符串,超時無法還原)

    PHP 字符串加密函數(shù)(在指定時間內(nèi)加密還原字符串,超時無法還原)

    最近, 從discuz里面發(fā)現(xiàn)了一個很牛的加密解密函數(shù)。此函數(shù)的厲害之處在于可以在指定時間內(nèi)加密還原字符串,超時無法還原.
    2010-04-04
  • php利用smtp類實現(xiàn)電子郵件發(fā)送

    php利用smtp類實現(xiàn)電子郵件發(fā)送

    這篇文章主要介紹了php利用smtp類輕松實現(xiàn)發(fā)送電子郵件,smtp類發(fā)送郵件的方法其實很簡單,需要的朋友可以參考下
    2015-10-10

最新評論