Sự khác biệt giữa giá trị cục bộ và giá trị chính là gì


78

Khi tôi hiển thị, phpinfo();tôi thấy hai cột: local valuemaster value. Khi nào máy chủ web sẽ chọn local valuevà khi nào nó sẽ chọn master value?

Câu trả lời:


73

masterlà giá trị được biên dịch sang PHP hoặc được đặt thông qua một php.inichỉ thị chính . ví dụ: giá trị có hiệu lực khi PHP kích hoạt, trước khi nó thực thi bất kỳ mã nào của bạn.

locallà giá trị hiện có hiệu lực tại thời điểm bạn gọi phpinfo(). Giá trị cục bộ này là kết quả KẾT THÚC của bất kỳ ghi đè nào đã diễn ra qua ini_set()các lệnh gọi, lệnh php_valuetrong httpd.conf / .htaccess, v.v.

ví dụ

php.ini:     foo=bar
httpd.conf:  php_value foo baz
.htaccess:   php_value foo qux
ini_set:     ini_set('foo', 'kittens');

Cho rằng, mastergiá trị là quxlocalgiá trị là kittens.


5
Dựa trên những gì bạn đã viết, giá trị chính sẽ không phải là 'bar', vì nó được đặt trong tệp php.ini?
Aine

1
@Aine Có, "giá trị chính" (như đã báo cáo phpinfo()) thực sự sẽ là "thanh" trong ví dụ này. Điều này được nêu trong đoạn đầu tiên của câu trả lời (không rõ tại sao lại có sự thay đổi rõ ràng trong lập luận trong ví dụ?). Đặt giá trị cấu hình PHP trong httpd.conf, .htaccesshoặc .user.ini, v.v. không thay đổi "giá trị chính" được báo cáo, chỉ "giá trị cục bộ" được thay đổi.
MrWhite 14/02/17

2
Không rõ trong câu trả lời rằng tệp .user.ini cũng có thể thay đổi giá trị cục bộ. Tôi khuyên bạn nên chỉnh sửa câu trả lời để làm rõ điều đó.
Jeff Baker

2
@MarcB: Tôi nghĩ theo đoạn đầu tiên của câu trả lời, dòng cuối cùng của câu trả lời phải là "Cho rằng, giá trị chính là thanh và giá trị cục bộ là baz (nếu đặt trong httpd.conf), qux (nếu đặt trong .htaccess), mèo con (nếu được đặt bằng ini_set) ". Nếu tôi đã hiểu đúng khái niệm và câu cuối cùng mà tôi đề xuất cũng đúng, vui lòng thay đổi câu cuối cùng của câu trả lời thành câu mà tôi đã đề xuất để xóa nhầm lẫn.
PHPLover 13/03/18

2
@MarcB: Vui lòng cập nhật câu trả lời của bạn để xóa nhầm lẫn đã tạo ra vềmaster value qux
PHPFan,

14

"Giá trị chính" (từ php.ini) có thể bị ghi đè bằng "Giá trị cục bộ" trong httpd.conf , .htaccess hoặc cấu hình Apache khác có chỉ thị php_value .

Đầu tiên là giá trị địa phương, thứ hai là giá trị toàn cầu. Giá trị cục bộ ghi đè giá trị toàn cục và được đặt trong PHP, HTACCESS, v.v. trong khi giá trị toàn cục được đặt trong php.ini. Để trả lời câu hỏi của bạn, giá trị đầu tiên được sử dụng.


6
Vì vậy, nếu, ví dụ, nếu local value = 0, nhưng master value = 1440 web-server sẽ luôn sử dụng 0, phải không?
Liauchuk Ivan

7
Đầu tiên là giá trị địa phương, thứ hai là giá trị toàn cầu. Giá trị cục bộ ghi đè giá trị toàn cục và được đặt trong PHP, HTACCESS, v.v. trong khi giá trị toàn cục được đặt trong php.ini. Để trả lời câu hỏi của bạn, giá trị đầu tiên được sử dụng; giá trị địa phương = 0
Legionar

4

trang web được lưu trữ sẽ kiểm tra các giá trị địa phương trong. htaccesshoặc .user.iniđầu tiên (Các tệp này nằm trong thư mục trang web cục bộ của bạn cũng có thể nói là tệp cấu hình cấp cục bộ).

Giá trị cục bộ ghi đè giá trị Chính, vì vậy php sẽ kiểm tra các giá trị cục bộ trước.

giá trị chính được đặt trong php.ini(tệp cấu hình php chính) chạy các lệnh sau trong thiết bị đầu cuối để tìm đường dẫn chính xác

php -i | grep 'Configuration File'

hoặc là

php -i | grep php.ini

vì vậy, ngay cả khi chúng tôi đặt giá trị chính php.ini, chúng tôi cũng cần kiểm tra các giá trị cục bộ .htaccesshoặc.user.ini

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.