ค้นหาไฟล์ php.ini ที่ถูกต้อง


168

ฉันกำลังพยายามค้นหาไฟล์ php.ini ที่ถูกต้องเพื่อแก้ไขและรีสตาร์ท apache ดังนั้นการเปลี่ยนแปลงจะเกิดขึ้นและฉันก็นิ่งงัน

ฉันพบไฟล์ php.ini สามไฟล์ (ไม่ทราบว่าทำไมมีสามไฟล์) นี่คือวิธีที่ฉันพบไฟล์

$ sudo find / -name php.ini
/etc/php5/cli/php.ini
/etc/php5/apache2/php.ini
/etc/php5/cgi/php.ini

ฉันก็ทำ ....

$ sudo php -i | grep 'Configuration File'
Configuration File (php.ini) Path => /etc/php5/cli
Loaded Configuration File => /etc/php5/cli/php.ini

ฉันเปลี่ยนทั้งหมดของพวกเขา (เพียงเพื่อให้แน่ใจ) การตั้งค่าที่ฉันต้องการ

ฉันรีสตาร์ท apache โดยใช้

sudo service apache2 restart

ผลลัพธ์ ...

* Restarting web server apache2

ฉันโหลดหน้าซ้ำและแสดงว่าไฟล์ php.ini ไม่ได้รับการอัปเดต

ฉันรู้สิ่งนี้เพราะฉันใช้

echo ini_get('post_max_size');

ซึ่งควรจะเปลี่ยนเป็น 20M แต่ยังคงเป็น 2M เท่านั้น

ฉันลองรีบูตเครื่องคอมพิวเตอร์โดยคิดว่าอาจหยุดเซิร์ฟเวอร์ apache และโหลดไฟล์ php.ini อีกครั้งด้วยการตั้งค่าที่ถูกต้อง แต่ความพยายามที่ล้มเหลวก็ล้มเหลว

มีโอกาสใดบ้างที่อาจมีไฟล์ php.ini อื่นที่อาจรบกวนการทำงาน


6
หนึ่ง 'ถูกต้อง' อยู่ในapache2ไดเรกทอรีย่อย
Joren

1
ใช้แทนupdatedb; locate php.ini find
sjas

@Michael ไฟล์อยู่/etc/php/5.6/apache2/php.iniใน Ubuntu 16.04 LTS Xenial Xerus ซึ่ง5.6/เป็นเวอร์ชั่นของ php ที่ติดตั้ง ก่อนอื่นให้คัดลอกไฟล์เพื่อphp.original.iniเปิดเพื่อแก้ไขด้วย sudo gedit /etc/php/5.6/apache2/php.ini
Hedley Finger

คำตอบ:


288

ไฟล์สามไฟล์ที่คุณมีแต่ละไฟล์มีไว้สำหรับการใช้งานที่แตกต่างกัน

/etc/php/5.6/cli/php.iniใช้สำหรับโปรแกรม CLI PHP ซึ่งคุณพบได้จากการรันphpบนเทอร์มินัล

/etc/php/5.6/cgi/php.ini ใช้สำหรับระบบ php-cgi ซึ่งไม่ได้ใช้ในการตั้งค่านี้โดยเฉพาะ

/etc/php/5.6/apache2/php.iniใช้สำหรับปลั๊กอิน PHP ที่ Apache ใช้ นี่คือสิ่งที่คุณต้องแก้ไขเพื่อให้การเปลี่ยนแปลงมีผลในการตั้งค่า Apache ของคุณ

/etc/php/5.6/fpm/php.iniสำหรับphp5-fpmโปรเซสเซอร์ซึ่งเป็น 'wrapper' ที่ทำงานร่วมกับ fastcgi สำหรับการประมวลผล PHP (เช่นส่งจาก NGINX ไปยังphp5-fpm) และทำงานเป็นกระบวนการแบบสแตนด์อโลนในระบบ (ซึ่งแตกต่างจากปลั๊กอิน PHP PHP)

สำหรับรุ่นของ Ubuntu ต่ำกว่า 16.04, /etc/php/5.6/, /etc/php/7.0/, /etc/php/7.1/, และอื่น ๆ จะถูกแทนที่ด้วย/etc/php5/และอื่น ๆ มิฉะนั้นเส้นทางเหล่านี้ยังคงถูกต้อง ปรับเปลี่ยนให้เหมาะสมกับสภาพแวดล้อมของคุณแทนที่5.6หรือหมายเลขด้วยโฟลเดอร์เวอร์ชันจริงที่มีอยู่ในสภาพแวดล้อมของคุณ


1
ไม่พบ php.ini ในไดเร็กทอรี / etc / php5 / apache2 แต่มันมีอยู่ในไดเรกทอรี CLI
Anuj TBE

2
@ anujsharma9196 เหตุผลเดียวที่น่าจะเป็นกรณีนี้ก็คือถ้าคุณไม่ได้ใช้ปลั๊กอิน Apache ที่สร้างขึ้นสำหรับ PHP เส้นทางของไฟล์ยังคงทำงานตามที่ระบุไว้ที่นี่จนถึงทุกวันนี้ (ยืนยันบน VM 15.04 ของฉัน)
Thomas Ward

21

ลองใช้สคริปต์ที่มีข้อมูลโค้ดนี้ในเบราว์เซอร์ของคุณ<?php phpinfo(); ?>และจากนั้นพยายามที่จะค้นหาสิ่งที่ต้องการการตั้งค่าไฟล์โหลด รายการนี้ระบุ php.ini ที่ PHP ของคุณใช้ในเซิร์ฟเวอร์ Apache ของคุณ


14

ในการค้นหาphp.iniCLI ที่ใช้อยู่คุณสามารถเรียกใช้:

php -i | grep 'php.ini'

ตัวอย่างผลลัพธ์:

$ php -i | grep 'php.ini'

Configuration File (php.ini) Path => /etc/php/7.0/cli
Loaded Configuration File => /etc/php/7.0/cli/php.ini

นี่ควรเป็นคำตอบที่ยอมรับได้!
Marcelo Ágil

1
นี่เป็นสิ่งที่ดี แต่จะให้การตั้งค่าการโหลด cli สำหรับ php เท่านั้น เพื่อให้ apache โหลด configs นั้นจำเป็นต้องทำ phpinfo () บนเว็บเพจ
Dipu Raj

13

สำหรับ php7 ubuntu 16.4

/etc/php/7.0/apache2/php.ini

1
ฉันหายไปไฟล์นั้น แพ็คเกจใดที่ให้ไฟล์นั้น
galmok

สำหรับ php7 บน Ubuntu 16.4
Softmixt

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