2010-10-06 18 views
15

Tôi đã phát hiện ra rằng:2 file php.ini

Khi tôi gõ như sau trên thiết bị đầu cuối:

php -i | grep php.ini 

tôi nhận được kết quả:

Các tập tin cấu hình Loaded là @/vv/php5/cli/php.ini

Tuy nhiên, từ phpinfo(), tôi được xem:

Các tập tin ini tải là @ /etc/php5/apache2/php.ini

Mà một trong những nguyên nhân trên được làm việc ngay bây giờ? Làm cách nào để có thể có hai tệp php.ini?

+0

đường dẫn trên máy chủ có thể khác nhau sau đó đường dẫn được hiển thị trong trình duyệt – Grumpy

Trả lời

28

Phụ thuộc vào nơi bạn đang chạy PHP từ đó. Nếu bạn chạy nó từ dòng lệnh, nó sử dụng cli/php.iniapache2/php.ini khi chạy qua apache.

Bạn đang thực hiện phpinfo() thông qua trình duyệt, do đó bạn nhận được /etc/php5/apache2/php.ini làm câu trả lời. Chạy php -r "phpinfo();" | grep "Loaded Configuration" từ thiết bị đầu cuối sẽ xuất ra CLI ini. Cùng chức năng, thay đổi ngữ cảnh.

Ưu điểm của hệ thống này rõ ràng là cho phép các cấu hình khác nhau tùy thuộc vào ngữ cảnh. Đối với một ví dụ đơn giản, bạn có thể muốn có safe_mode trên trong apache nhưng nó không cần thiết trong chế độ CLI.

Đường dẫn .ini của bạn thực sự khá khác thường. Thông thường, .ini mặc định chỉ là php.ini và CLI .ini được gọi là php-cli.ini và chúng nằm trong cùng một thư mục.

Tôi không có chuyên gia về chủ đề này nhưng đây phải là ý tưởng cơ bản. Nếu có ai sửa đổi, tôi rất vui khi được nghe.

+1

Yup. Bạn đã làm đúng. Ý tưởng cơ bản đằng sau các tệp INI khác nhau cho CLI và Apache là người ta có thể có nhiều máy chủ ảo chạy trên một hệ thống đơn lẻ. Cảm ơn câu trả lời của bạn. –

+1

@ HrishikeshChoudhari “Ý tưởng cơ bản đằng sau các tệp INI khác nhau cho CLI và Apache là người ta có thể có nhiều máy chủ ảo chạy trên một hệ thống duy nhất.” 100% không phải như vậy. Phiên bản PHP CLI của 'php.ini' là dành cho dòng lệnh PHP. Module Apache 'php.ini' là dành cho mô-đun PHP Apache. Hai điều khác biệt và khác biệt. – JakeGould

Các vấn đề liên quan