Làm thế nào để xác định PHP nào đang được sử dụng?


10

Làm thế nào để xác định PHP nào đang được sử dụng?

Ví dụ, nếu có /usr/local/bin/phpusr/local/bin/php5, làm thế nào để tôi biết cái nào đang được sử dụng bởi các tập lệnh PHP của tôi?

Câu trả lời:


11

Nếu bạn đang sử dụng CLI PHP, thì hãy thử sử dụng các lệnh shell của (tôi giả sử rằng bạn đang sử dụng linux ở đây)

which php - will locate the php executable (this should be the default php used by you)
whereis php - The first path displayed will be the location of the php executable
echo $PATH - will print a list of paths separated by ":" where the system looks for commands

Nếu bạn đang sử dụng PHP làm mô-đun Apache thì phpinfo () sẽ cho bạn biết phiên bản php được sử dụng và các tệp cấu hình php, KHÔNG phải là đường dẫn php . Nếu bạn có 2 phiên bản thực thi php thì điều này sẽ giúp bạn. Nếu chúng là cùng một phiên bản thì sẽ không thực sự quan trọng ai là ai :)

Nếu bạn muốn tìm hiểu phiên bản php, thì php -v sẽ in phiên bản php trong CLI và mọi mô-đun Zend được cài đặt.

Nếu bạn muốn tìm hiểu các tệp ini được bao gồm thì php --ini sẽ hiển thị danh sách các tệp ini được tải bởi mô-đun php (điều này áp dụng cho phiên bản CLI).


Cảm ơn tất cả các đầu vào. Rõ ràng, whichlệnh là những gì tôi cần.
Randell

@Randell - Không sử dụng which; sử dụng command -vthay thế. Cũng xem Kiểm tra nếu một chương trình tồn tại từ một tập lệnh Bash .

7

Chỉ cần thêm một tập lệnh đơn giản

<?php phpinfo(); ?>

Điều này sẽ không chạy phptừ đăng nhập của người dùng; và không nhất thiết là php được sử dụng bởi Apache?

5

Giả sử bạn đang sử dụng thông qua máy chủ Web:
Bạn có thể đặt chức năng sau trong tập lệnh:

<?php 
phpinfo(); 
?>

Nếu điều này không hoạt động, có thể là do chức năng này bị vô hiệu hóa trong php.ini. Điều này thường được thực hiện để bảo mật. Nếu đây là trường hợp, bạn sẽ có một dòng trong php.ini của bạn như:

disable_functions = phpinfo

Nếu đây là trường hợp, tạm thời thay đổi nó thành

disable_functions =

Nếu bạn đang sử dụng php cho Shell ScScript:

  1. Cần có 'dòng shebang' ở trên cùng, đại loại như

    #! / usr / cục bộ / bin / php -q

  2. Bạn có chắc chắn không phải là một liên kết smybolic với nhau? làm

    ls -l / usr / local / bin / php

  3. Đừng ;-)


5

Cũng từ dòng lệnh:

$ php -v

PHP 5.2.6-3ubfox4 với Suhosin-Patch 0.9.6.2 (cli) (được xây dựng: 31 tháng 3 năm 2009 02:11:31) Bản quyền (c) 1997-2008 Nhóm Zend Engine v2.2.0, Bản quyền (c) 1998- Công nghệ Zend 2008


Điều này sẽ không chạy phptừ đăng nhập của người dùng; và không nhất thiết là php được sử dụng bởi Apache?

1
<?php
// prints e.g. 'Current PHP version: 4.1.1'
echo 'Current PHP version: ' . phpversion();
?>

0

Nếu bạn đang nói về các tập lệnh web được gọi bởi máy chủ web Apache của bạn và PHP được định cấu hình như một mô-đun Apache thì câu trả lời là KHÔNG.

Các vị trí bạn đề cập trong câu hỏi của bạn là các trình thông dịch tập lệnh dòng lệnh sẽ được gọi bằng ký hiệu shebang như

 #!/usr/local/bin/php

ở đầu tập lệnh dòng lệnh php của bạn

bạn có thể gọi các thông dịch viên mà bạn đề cập riêng, vì chúng có các tên khác nhau

# php

sẽ gọi / usr / local / bin / php và

# php5

sẽ gọi / usr / local / bin / php5

Không một trong số chúng được sử dụng nếu bạn sử dụng PHP thông qua mô-đun Apache. Nếu bạn sử dụng CGI-Version của php, nó sẽ hiển thị trong phpinfo (); đầu ra.



0
<?php echo shell_exec('which php'); ?>

Điều này hoạt động ngay cả khi bạn không có quyền truy cập shell. ;-)


Tôi không nghĩ rằng đây là những gì người hỏi đang tìm kiếm. Điều này chỉ cho bạn biết môi trường shell sẽ kết thúc bằng cách sử dụng tra cứu PATH. Đó không nhất thiết là cùng một PHP với kịch bản được thực thi.
Theuni
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.