การเปลี่ยน upload_max_filesize บน PHP


85

ฉันใช้ PHP 5.3.0 และพบบางอย่างที่อาจเป็นจุดบกพร่อง (ซึ่งในกรณีนี้ฉันจะรายงาน) หรืออาจเป็นฉัน - ดังนั้นฉันจึงขอให้แน่ใจ

เมื่อเรียกใช้รหัสนี้:

<?php
ini_set('upload_max_filesize', '10M');
echo ini_get('upload_max_filesize'), ", " , ini_get('post_max_size')

ฉันลงเอยด้วย:

2M, 8M

นี่คือแม้ว่า php.ini ของฉันจะตั้งค่าให้สูงกว่านี้:

upload_max_filesize = 10M
post_max_size = 10M

(เกิดขึ้นเพียงครั้งเดียว)

เนื่องจากข้อผิดพลาดเกิดขึ้นหลังจากตั้งค่าเช่นเดียวกับที่ตั้งค่าใน php.ini ฉันคิดว่ามันเป็นจุดบกพร่อง ใครช่วยยืนยันหรือชี้ว่าฉันผิดพลาดตรงไหน?

อัปเดต : ดูเหมือนว่าการรีสตาร์ท Apache จะแก้ไขสิ่งนี้ - ฉันคิดเสมอว่าไม่จำเป็นต้องรีสตาร์ทถ้าคุณเปลี่ยน php.ini


9
"ฉันคิดเสมอว่าไม่จำเป็นต้องรีสตาร์ทถ้าคุณเปลี่ยน php.ini" PHP CLI รับการเปลี่ยนแปลงทันทีเนื่องจากแยกวิเคราะห์ php.ini ทุกครั้งที่เรียกใช้ mod_php แยกวิเคราะห์ php.ini หนึ่งครั้ง - เมื่อ apache เริ่มทำงาน
Frank Farmer

ฉันมีปัญหาเดียวกันเมื่อเร็ว ๆ นี้ upload_max_filesize จะไม่มีผลหากไม่รีสตาร์ท Apache ฉันใช้ PHP 5.2.9 หลังจากรีสตาร์ททุกอย่างทำงานได้ดี
Haluk

เพื่อหลีกเลี่ยงการรีสตาร์ท apache แบบสมบูรณ์เพียงใช้ "sudo service apache2 reload"
user1048839

คำตอบ:


69

คุณไม่สามารถใช้สัญกรณ์ชวเลขเพื่อตั้งค่าการกำหนดค่าภายนอก PHP.ini ฉันคิดว่ามันลดลงเหลือ 2MB เป็นค่าเริ่มต้นที่คอมไพล์เมื่อต้องเผชิญกับค่าที่ไม่ดี

ในทางกลับกันฉันไม่คิดว่าupload_max_filesizeจะสามารถตั้งค่าโดยใช้ini_set()ไฟล์. รายการ "ข้าราชการ"PHP_INI_PERDIRกล่าวว่ามันเป็น


12
คุณคิดถูกแล้ว! คุณไม่สามารถตั้งค่า upload_max_filesize โดยใช้ ini_set () ได้เนื่องจาก upload_max_filesize เป็นประเภท PHP_INI_PERDIR ซึ่งหมายความว่าสามารถเปลี่ยนแปลงได้ผ่านทาง: php.ini, .htaccess หรือ httpd.conf ตามที่ระบุไว้ที่: php.net/manual/en/configuration.changes.modes เท่านั้น php
Marco Demaio

2
จริงๆแล้วคุณสามารถใช้สัญกรณ์ชวเลขนอก PHP.ini ได้ คุณสามารถใช้มันในและยังมี.htaccess ini_setแม้ว่าอาจจะไม่ใช่ในทุกเวอร์ชัน
Protector one

70

คุณใช้ผู้ให้บริการโฮสติ้งที่ใช้ร่วมกันหรือไม่? อาจเป็นการตั้งค่าหลักที่ลบล้างสิ่งที่คุณพยายามจะเปลี่ยนแปลง คุณได้ลองเพิ่มสิ่งเหล่านั้นลงใน. htaccess ของคุณแล้วหรือยัง?

php_value upload_max_filesize 10M
php_value post_max_size 10M

1
ไม่นี่คืออินสแตนซ์ Apache / PHP ของฉันเองในเครื่องของฉัน (ซึ่งเป็น Windows ถ้าเกี่ยวข้อง) ฉันจะลองเพิ่มสิ่งเหล่านั้นในการกำหนดค่า Apache
รอส

5
อัปเดต: สิ่งนี้มีผลต่อมัน (เปลี่ยนเป็น 10) ดังนั้นวิธีนี้จึงใช้ได้ ฉันยังค่อนข้างสับสนว่าทำไมมันไม่ทำงานใน php.ini หรือใช้ ini_set
รอส

+1 นี่เป็นวิธีที่แน่นอนถ้าคุณไม่สามารถเข้าสู่ php.ini ได้ - ขอบคุณมาก
Alex Coplan

3
โปรดทราบว่าสิ่งนี้ใช้ได้กับ Apache ที่ใช้ PHP เป็นโมดูลเท่านั้นไม่ใช่ CGI
ChrisV

ฉันจะบอกว่านี่เป็นวิธีที่ต้องการแม้ว่าจะสามารถเข้าถึงphp.iniไฟล์ได้ก็ตาม ให้คุณตั้งค่าสิทธิ์เหล่านี้ตามความต้องการแทนที่จะเป็นการตั้งค่าส่วนกลาง
Bryant Jackson

43

เนื่องจากฉันเพิ่งพบปัญหานี้ในโฮสต์ที่ใช้ร่วมกันและไม่สามารถเพิ่มค่าลงในไฟล์. htaccess ของฉันฉันคิดว่าฉันจะแบ่งปันวิธีแก้ปัญหาของฉัน

ฉันสร้างไฟล์ ini ที่มีค่าอยู่ในนั้น ง่ายๆดังนี้:

สร้างไฟล์ชื่อ ".user.ini" และเพิ่มค่าของคุณ

upload_max_filesize = 150M
post_max_size = 150M

บูมแก้ไขปัญหาแล้ว


ทำงานให้ฉัน! ขอบคุณ!
Justin Putney

4
"นอกเหนือจากไฟล์ php.ini หลักแล้ว PHP ยังสแกนหาไฟล์ INI ในแต่ละไดเร็กทอรีโดยเริ่มจากไดเร็กทอรีของไฟล์ PHP ที่ร้องขอและทำงานจนถึงรูทเอกสารปัจจุบัน" php.net/manual/en/configuration.file.per-user.php
จนถึง

1
ใช้งานได้ดีกับไซต์ WordPress! ขอบคุณ!
avenged_badger

วิธีนี้ใช้งานได้ดีเนื่องจากฉันไม่สามารถทำได้จาก. htaccess ขอบคุณ!
Strategist

PHP โดยค่าเริ่มต้นจะอ่านไฟล์ user.ini ซ้ำทุกๆ 5 นาที ดังนั้นโปรดอดใจรอหากผลลัพธ์ไม่ปรากฏในทันที
Andrey Yaremenko

12

ฉันทำให้สิ่งนี้ทำงานได้โดยใช้ไฟล์. user.ini ในไดเร็กทอรีเดียวกับสคริปต์ index.php ของฉันที่โหลดแอปของฉัน นี่คือเนื้อหา:

upload_max_filesize = "20M"
post_max_size = "25M"

นี่เป็นวิธีที่แนะนำสำหรับ Heroku


6

นอกจากนี้ยังสามารถควบคุมได้ด้วยการกำหนดค่า apache ตรวจสอบ httpd.conf และ / หรือ. htaccess สำหรับสิ่งต่อไปนี้:

php_value upload_max_filesize 10M

0

หากคุณใช้งานในเซิร์ฟเวอร์ภายในเช่น wamp หรือ xampp ตรวจสอบให้แน่ใจว่าได้ใช้ php.ini ที่คุณคิดว่าเป็น โดยปกติเซิร์ฟเวอร์เหล่านี้จะตั้งค่าเริ่มต้นเป็น php.ini ที่ไม่ได้อยู่ในโฟลเดอร์เอกสาร html ของคุณ


0

วิธีนี้สามารถใช้ได้เฉพาะในกรณีที่ปัญหาอยู่ในการติดตั้ง WordPress!

หากคุณไม่มีการเข้าถึง FTP หรือขี้เกียจเกินไปที่จะแก้ไขไฟล์

คุณสามารถใช้ปลั๊กอินเพิ่มขนาดไฟล์อัปโหลดสูงสุดเพื่อเพิ่มขนาดไฟล์อัปโหลดสูงสุด


0

โดยค่าเริ่มต้น PHP อนุญาตให้อัปโหลดไฟล์สูงสุด 2 MB บนเซิร์ฟเวอร์ แต่คุณสามารถแก้ไขขนาดสูงสุดของการอัปโหลดไฟล์ได้ตามเงื่อนไขของคุณ ด้วยการใช้ไฟล์กำหนดค่า PHP php.ini คุณสามารถเพิ่มหรือลดขนาดไฟล์อัพโหลดใน PHP

ขั้นแรกให้เปิดไฟล์ php.ini ในโปรแกรมแก้ไขข้อความของคุณ ค้นหาตัวแปร upload_max_filesize และกำหนดขนาดที่คุณต้องการเพิ่ม

ค้นหาตัวแปร post_max_size และกำหนดขนาดที่คุณต้องการเพิ่ม

post_max_size = 128M

คุณสามารถตรวจสอบได้จากที่นี่


-1

หากคุณใช้ ini_set ทันทีคุณจะพบที่นี่http://php.net/manual/en/ini.core.phpข้อมูลที่เช่น upload_max_filesize และ post_max_size ไม่สามารถเปลี่ยนแปลงได้ทันที (PHP_INI_PERDIR)

มีเพียงการเปลี่ยนแปลง php.ini, .htaccess หรือ vhost เท่านั้นที่ดูเหมือนจะเปลี่ยนตัวแปรเหล่านี้



โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.