phpinfo () và php -v hiển thị phiên bản khác nhau của PHP


18

Tôi muốn biết phptôi đang sử dụng phiên bản nào vì vậy tôi đã viết kịch bản tiêu chuẩn:

phpinfo();

Cái nào cho tôi

PHP version 5.6.10

Các đúng phiên bản PHP cần thiết cho ứng dụng của tôi. Khi tôi đã thử trong thiết bị đầu cuối:

php -i

hoặc là

php -v

Nó cho tôi thấy:

PHP version 5.3.2

Mà tôi không cần. Sau đó, tôi đã thử với:

which php

Nó cho tôi thấy:

/usr/bin/php

Bây giờ tôi bối rối không biết tôi đang sử dụng phiên bản PHP nào. Các tệp được tải lên trang web lưu trữ và tôi không thể thực hiện bất kỳ thay đổi nào đối với các tệp cấu hình như httpd.confhoặc php.ini.

Câu trả lời:


22

Câu trả lời ngắn hơn.

Đừng hoảng sợ! Nếu bạn lo lắng về phiên bản PHP mà máy chủ Apache của bạn đang sử dụng, thì kết quả đầu ra phpinfo()luôn là điều bạn nên chú ý. Mô-đun PHP Apache và nhị phân dòng lệnh PHP là hai thứ khác nhau không can thiệp lẫn nhau.

Trong thực tế, bạn có thể biên dịch và tải các phiên bản PHP khác nhau mà bạn muốn làm việc với Apache miễn là bạn điều chỉnh Apache để tải nó đúng cách. Giao diện dòng lệnh PHP sẽ không bao giờ hoạt động trong trường hợp phân tích cú pháp các trang PHP.

Phiên bản dòng lệnh của PHP chỉ đơn giản là có các nhiệm vụ cụ thể của dòng lệnh và mô-đun PHP cho Apache sẽ không bao giờ chạm, sử dụng hoặc cần điều đó.

Câu trả lời dài hơn.

Bạn nói điều này:

Tôi muốn biết phptôi đang sử dụng phiên bản nào vì vậy tôi đã viết kịch bản tiêu chuẩn:

phpinfo();

Cung cấp cho tôi phiên bản PHP 5.6.10- phiên bản PHP chính xác cần thiết cho ứng dụng của tôi. Khi tôi đã thử trong thiết bị đầu cuối:

php -i or php -v   

Nó cho tôi thấy phiên bản PHP 5.3.2 mà tôi không cần.

Phiên bản PHP có sẵn từ dòng lệnh không liên quan gì 100% với phiên bản PHP được tải dưới dạng mô-đun. Đây là những điều hoàn toàn riêng biệt.

Vì vậy, nếu bạn lo lắng về phiên bản PHP mà ứng dụng web của bạn đang sử dụng, nếu phpinfo()hiển thị phiên bản 5.6.10 và đó là những gì bạn muốn / cần thì 100% là tốt.

Phiên bản dòng lệnh của PHP là một mục hệ thống hoàn toàn riêng biệt. Vì vậy, điều duy nhất quan trọng là đầu ra của phpinfo().

Nếu vì lý do nào đó bạn muốn sử dụng một phiên bản PHP khác với Apache, tất cả những gì bạn cần làm là cài đặt mô-đun PHP Apache đã biên dịch ở đâu đó và thêm vào hoặc điều chỉnh dòng này trong cấu hình Apache của hệ thống của bạn:

LoadModule php5_module    /path/to/php/and/the/module/for/apache2/libphp5.so

Và chỉ cần điều chỉnh đường dẫn đến phần mềm libphp5.solà những gì Apache sử dụng để phân tích PHP PHP sau đó khởi động lại Apache và bạn đang kinh doanh.

Ví dụ, tại một thời điểm tôi đã phải biên dịch phiên bản PHP 5.1.6 từ nguồn (có hỗ trợ thư viện GD) để sử dụng trên máy Ubuntu 12.04 chạy PHP 5.3.5. Trong tệp tải mô-đun PHP của máy chủ tại đây:

/etc/apache2/mods-available/php5.load

Tôi đã có những dòng như thế này:

# LoadModule php5_module        /usr/lib/apache2/modules/libphp535.so
LoadModule php5_module        /usr/lib/apache2/modules/libphp516-gd.so

Lưu ý làm thế nào một dòng được nhận xét cho libphp535.sovà một dòng khác libphp516-gd.solà không bị thiếu? Những gì tôi đã làm là tôi đổi tên libphp5.somô-đun PHP 5.3.5 mặc định libphp535.sothành số phiên bản trong tên để tôi có thể có nó để tham khảo và sau đó đặt tên là mô-đun PHP 5.1.6 (có hỗ trợ thư viện GD) libphp516-gd.sođể tôi biết đó là gì là tốt Bằng cách này, tôi có cả hai có sẵn cho tôi cạnh nhau trên hệ thống.

Và như tôi đã nói ngay từ đầu, phiên bản PHP được sử dụng trong dòng lệnh hoàn toàn không liên quan gì đến mô-đun PHP của Apache. Vì vậy, bạn có thể có bất kỳ số phiên bản khác nhau của các mô-đun PHP Apache đang ngồi trên hệ thống sẵn sàng hoạt động; chỉ cần điều chỉnh một cấu hình và khởi động lại Apache và bạn nên sử dụng mọi phiên bản PHP mà bạn đã chỉ định mà Apache nên sử dụng.


23

Nếu bạn gặp vấn đề này trong khi nâng cấp từ PHP5 lên PHP7 trên Ubuntu 14.04 với Apache, thì đây là điều đã giúp tôi (tín dụng ở đây ):

Vô hiệu hóa mô-đun PHP5 trên Apache:

sudo a2dismod php5

Bây giờ kích hoạt PHP7:

sudo a2enmod php7.1

Để phản ánh các thay đổi, cần phải khởi động lại Apache:

sudo systemctl restart apache2

điều này có thể làm sập dự án nếu php.ini khác
KawaiKx

2

Nếu bạn đang cố chạy mã PHP từ máy chủ web của mình, thì phiên bản bạn đang sử dụng là phiên bản được báo cáo bởi phpinfo()= 5.6.10 .

Máy chủ của bạn rõ ràng đã cài đặt nhiều phiên bản PHP và khi bạn đăng nhập và chạy phptrên dòng lệnh, bạn sẽ nhận được phiên bản cũ hơn được cài đặt thành / usr / bin / php.

Một máy chủ có thể có nhiều phiên bản PHP và dường như của bạn.

Nếu bạn cần thực hiện thủ công PHP giống như máy chủ web của mình thì bạn cần tìm phiên bản khác. Hãy thử chạy các lệnh sau:

/usr/local/bin/php -v
/opt/local/bin/php -v
/opt/bin/php -v

Một trong số đó có thể tiết lộ một PHP có cùng phiên bản với máy chủ web của bạn và khi bạn tìm ra nó là cái nào, bạn có thể sử dụng PHP đó thay vì mặc định.


0

Nếu tôi có thể thêm 2 xu của mình ...

Tôi đã nâng cấp phiên bản Nextcloud của mình. Khi tôi chạy quy trình nâng cấp, tôi phải "sudo php" với tư cách là người dùng apache, nhưng nó đã từ chối chạy vì phiên bản php CLI được chạy theo mặc định bởi người dùng apache đã quá cũ. Tuy nhiên, phpinfo (); trên máy chủ của tôi hiển thị phiên bản php mới nhất được cài đặt.

Tôi nhận ra rằng đó là vì biến PATH trong tệp /home/apache/.bashrc được đặt thành phiên bản đầu tiên của php mà tôi đã cài đặt trên máy chủ của mình và nó không bao giờ được cập nhật nữa (Tôi luôn biên dịch / cài đặt php từ nguồn trên Github )

Giải pháp:

Khi bạn cập nhật php trên máy chủ web của mình và muốn đảm bảo phiên bản php CLI được sử dụng là phiên bản mới nhất khi bạn sudo là người dùng apache, đừng quên thay đổi nó trong tệp .bashrc của người dùng này, như sau:

PATH=$PATH:/var/www/html: /usr/local/php7.1.32/bin export PATH


-1

Các bước để khắc phục điều này. Đầu tiên, phiên bản PHP hiển thị cho bạn.

php -v

Bây giờ bạn sẽ cần một đường dẫn PHP, Nếu bạn không biết thì bạn có thể liên hệ với bộ phận hỗ trợ lưu trữ của mình cho đường dẫn PHP. Trong trường hợp của tôi, nó là

/opt/php71/bin/php

Bây giờ, đã đến lúc chạy lệnh này trong terminal.

alias php='/opt/php71/bin/php'

Điều này sẽ thay đổi phiên bản PHP của bạn thành PHP 7.1 Nếu bạn muốn thay đổi phiên bản thành 7.2, bạn có thể thử

alias php='/opt/php72/bin/php'

Bạn xong việc rồi. Xác nhận nó với

php -v

-3

Tạo đường dẫn biến môi trường cho php phiên bản mới nhất ex: C: \ wamp64 \ bin \ php \ php7.2.4 Bây giờ thay đổi thư mục phiên bản php trước đây của bạn máy chủ và cli php sẽ giống nhau

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.