2009-09-08 30 views
23

Làm cách nào để đưa tệp php.ini vào tệp php.ini khác?Làm cách nào để đưa tệp php.ini vào tệp php.ini khác?

+2

Tôi quan tâm đến cách RHEL/Fedora hoàn thành /etc/php.d/* bao gồm. Họ đã vá PHP để làm điều này có thể? – gahooa

+0

@gahooa đó là câu hỏi mà tôi đã hướng dẫn tôi ở đây. Bạn đã từng học cách chúng hoàn thành /etc/php.d/* chưa? –

+1

xem câu trả lời được chấp nhận bên dưới, điều này cũng trả lời câu hỏi của bạn. U cũng có thể làm php -i (phpinfo()) và xem php được xây dựng như thế nào –

Trả lời

17

Tôi không nghĩ bạn có thể "bao gồm" tệp .ini từ tệp php.ini chính.

Một khả năng giải pháp, tuy nhiên, có thể sử dụng tùy chọn này trên dòng cấu hình, khi biên dịch PHP:

--with-config-file-scan-dir=PATH               
    Set the path where to scan for configuration files 

Nếu tùy chọn này được sử dụng tại thời gian biên dịch, PHP sẽ tìm kiếm tất cả các tập tin .ini trong thư mục này, ngoài tệp php.ini "bình thường".

Tôi cho rằng đây là những gì được sử dụng bởi Ubuntu, ví dụ, sử dụng tệp .ini khác cho mỗi phần mở rộng được tải xuống, thay vì sửa đổi php.ini.

Đường dẫn đến file php.ini được định nghĩa với tùy chọn này, trên dòng configure:

--with-config-file-path=PATH                
    Set the path in which to look for php.ini [PREFIX/lib] 

Tuy nhiên, nó có thể có nghĩa là bạn sẽ phải tái biên dịch PHP - mà không phải là khó, btw - phần khó nhất là để có được những phụ thuộc bạn cần.

Và, đây là một bài đăng trên các internals @ MailList-list mà nói những điều tương tự như tôi làm: config files and PHP_CONFIG_FILE_SCAN_DIR

+0

Ngoài cài đặt thời gian biên dịch, còn có biến môi trường 'PHPRC' có thể thay đổi thư mục' php.ini' mặc định (và các tệp ini khác). –

+0

Khi bạn nói trên dòng cấu hình, điều đó có nghĩa là gì? Đó có phải là một tệp ở đâu đó không? – tomjung

1

Bạn không thể. Đọc các trang trực tuyến:

The configuration file

TÓM TẮT: Các tập tin cấu hình (php.ini) được đọc khi PHP khởi động. Đối với các phiên bản mô-đun máy chủ của PHP, điều này chỉ xảy ra một lần khi máy chủ web bắt đầu. Đối với phiên bản CGI và CLI , phiên bản này xảy ra ở mọi yêu cầu .

.user.ini files

TÓM TẮT: Ngoài các chính tập tin php.ini, PHP quét cho các tập tin INI trong mỗi thư mục, bắt đầu với thư mục của tập tin PHP yêu cầu, và làm việc theo cách của nó lên đến gốc tài liệu hiện tại (như được đặt trong $ _SERVER ['DOCUMENT_ROOT']). Chỉ các cài đặt INI có các chế độ PHP_INI_PERDIR và PHP_INI_USER mới được nhận dạng trong .tệp INI kiểu người dùng.ini.

+3

Tôi đọc những bài viết trước khi đăng bài, không nói gì về việc liệu có thể hay không. –

0

Bạn có thể thử để mô phỏng nó làm cho việc sử dụng ini_set chức năng. Nhưng khi "trang người đàn ông" chỉ ra, không phải tất cả các tùy chọn ini đều có thể được thay đổi bằng cách sử dụng ini_set. Nó chắc chắn là một chức năng hữu ích, mặc dù.

7

Tôi cài đặt memcached cho php và không chắc chắn làm thế nào để đảm bảo rằng ini của nó đã được bao gồm trong php.ini của tôi, nhưng khi nó quay ra nó tự động là. Bạn có thể xác thực những gì đang được tải bằng cách chạy php --ini.

php --ini 
Configuration File (php.ini) Path: /opt/local/etc/php5 
Loaded Configuration File:   (none) 
Scan for additional .ini files in: /opt/local/var/db/php5 
Additional .ini files parsed:  /opt/local/var/db/php5/memcached.ini 
+0

có vẻ như đường dẫn tệp cấu hình được trả về bởi "php --ini" có thể không giống như được trả lại từ trang web (). – gonglong

4

người ta cũng có thể xác định đường dẫn trong ~/.bashrc

export PHP_INI_SCAN_DIR=/usr/local/lib/php.d 
1

Có vẻ bạn không thể bao gồm một tập tin ini vào khác để nó được tham chiếu và tải. Nhưng bạn có thể thiết lập php để tải một số tập tin bằng cách nói cho nó những thư mục để xem xét.

Khi sử dụng thiết lập FastCGI (có thể trong FPM, mặc dù tôi không biết chắc chắn) bạn có thể xuất biến môi trường từ trong trình bao bọc php.

Ở đó bạn có thể làm:

export PHP_INI_SCAN_DIR=/etc/php5/cgi/conf.d:/var/www/mydomain.net/etc 

/var/www/mydomain.net/etc chỉ là một ví dụ, đó là thư mục mà bạn đặt thêm file ini của bạn vào. Có vẻ như đây có thể là danh sách được phân tách :.

Sử dụng phpinfo.php (tệp được gọi là tùy ý chỉ chứa <? phpinfo();), mở URL tương ứng trong trình duyệt của bạn và kiểm tra danh sách các thư mục được phân tích cú pháp và danh sách tệp được tải ở khu vực trên cùng của nó.

/etc/php5/cgi/conf.d nên luôn luôn được bao gồm (tôi đoán vì nó được biên dịch thành tệp thực thi php) và có thể không thực sự cần thiết.

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