2012-06-01 40 views
22

php chạy trên máy chủ web và phiên bản CLI không sử dụng cùng tệp php.ini. Nếu tôi làm một lệnh php --ini, nó hiển thị nàyCách thay đổi đường dẫn đến php.ini trong phiên bản PHP CLI

Configuration File (php.ini) Path: C:\Windows 
Loaded Configuration File:   C:\wamp\bin\php\php5.3.8\php.ini 
Scan for additional .ini files in: (none) 
Additional .ini files parsed:  (none) 

trong khi phiên bản web của tôi sử dụng php.ini trong C:\wamp\bin\apache\Apache2.2.21\bin\php.ini. Điều này có lẽ rất phổ biến cho những người sử dụng wamp.

Làm cách nào để thay đổi Tệp cấu hình được tải để đọc từ C:\wamp\bin\apache\Apache2.2.21\bin\php.ini vì vậy tôi không phải duy trì 2 phiên bản php.ini khác nhau?

Trả lời

15

mỗi http://php.net/configuration.file:

php.ini được tìm kiếm tại các địa điểm này (theo thứ tự):

  • SAPI mô-đun vị trí cụ thể (PHPIniDir chỉ trong Apache 2, -c tùy chọn dòng lệnh trong CGI và CLI, tham số php_ini trong NSAPI, biến môi trường PHP_INI_PATH trong THTTPD)
  • Biến môi trường PHPRC. Trước PHP 5.2.0, điều này đã được kiểm tra sau khi khóa registry được đề cập dưới đây.
  • Kể từ PHP 5.2.0, vị trí của tệp php.ini có thể được đặt cho các phiên bản PHP khác nhau. Các khóa registry sau đây được kiểm tra theo thứ tự:
    • [HKEY_LOCAL_MACHINE \ SOFTWARE \ PHP \ xyz], [HKEY_LOCAL_MACHINE \ SOFTWARE \ PHP \ xy] và [HKEY_LOCAL_MACHINE \ SOFTWARE \ PHP \ x], trong đó x, y, z có nghĩa là các phiên bản chính, nhỏ và phiên bản PHP. Nếu có một giá trị cho IniFilePath trong bất kỳ khóa nào trong số các khóa này, giá trị đầu tiên được tìm thấy sẽ được sử dụng làm vị trí của tệp php.ini (chỉ dành cho Windows).
    • [HKEY_LOCAL_MACHINE \ SOFTWARE \ PHP], giá trị của IniFilePath (chỉ dành cho Windows).
  • Thư mục làm việc hiện tại (trừ CLI).
  • Thư mục của máy chủ web (cho các mô-đun SAPI) hoặc thư mục PHP (nếu không trong Windows).
  • Thư mục Windows (C: \ windows hoặc C: \ winnt) (dành cho Windows) hoặc tùy chọn thời gian biên dịch --with-config-file-path.

Đối với CLI, đặt cược tốt nhất của bạn có lẽ là một trong hai để thiết lập các biến môi trường $PHPRC cho tài khoản đó sẽ được thực hiện kịch bản, hoặc biên dịch lại PHP với một khung cảnh --with-config-file-path cấu hình khác nhau.

Bạn cũng có thể ghi đè lên các thư mục tìm kiếm php.ini trên một cơ sở cho mỗi thực hiện bằng cách xác định tùy chọn -c khi gọi PHP:

 
> php --help 
Usage: php [options] [-f] [--] [args...] 
... 
    -c | Look for php.ini file in this directory 

+0

vì vậy, nó là một cửa sổ máy chạy wamp. Làm cách nào để đặt $ PHPRC? – Sufendy

+2

nó chỉ là một biến môi trường, google cho 'thiết lập môi trường biến cửa sổ' nên cung cấp hướng dẫn. – goat

0

thử chạy phpinfo() chức năng trên cả hai bên

Webserver và CLI và tìm ra vị trí chính xác của tập tin php.ini của bạn cho cả hai bên

và duy trì các tập tin chỉ

+2

tôi đã biết các tập tin địa điểm cả hai. Câu hỏi đặt ra là làm thế nào để thống nhất chúng. – Sufendy

1

Tôi đã dành khoảng 3 giờ cố gắng để thực hiện chính xác những gì câu hỏi của bạn yêu cầu . Không thể làm được. Tôi đã từ bỏ và sao chép php đó.ini đến C: \ Windows và thay đổi biến ENV của tôi "PHPRC" thành C: \ Windows (và trong httpd.conf). Bằng cách đó cả hai php CLI của tôi và Apach php e đang sử dụng cùng một tập tin. Tôi không thể có được "php -m" để hiển thị các mô-đun tôi đã tải trong php.ini của tôi cho cuộc sống của tôi cho đến khi tôi thực hiện thay đổi này ...

+0

Đây là chìa khóa cho tôi. Tôi thực sự loại bỏ biến môi trường PHPRC và khởi động lại và php mặc định để tìm kiếm trong cùng một đường dẫn như thư mục làm việc hiện tại. Cảm ơn! – AS7K

7

Bằng cách chỉ định biến môi trường PHPRC để trỏ đến cùng một php. ini như một Apache sử dụng làm việc cho tôi trên Ubuntu

export PHPRC=/etc/php5/apache2/php.ini 

Hoặc đặt nó trong $ HOME/.bashrc để nhập khẩu mỗi cli thời gian bắt đầu

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