Kiểm tra PHP nếu ssh2 được cài đặt

Xin chào,
Tôi vừa thử nghiệm nó và có thể cài đặt tiện ích mở rộng ssh2 php trong Rocky Linux 8

root@rocky ~]# php -m  |grep ssh
ssh2
[root@rocky ~]#

Tôi đã sử dụng bước dưới đây

dnf cài đặt libssh2-devel. x86_64
pecl tìm kiếm ssh2
cài đặt pecl -a ssh2-1. 3. 1
tiếng vang “tiện ích mở rộng = ssh2. vậy” > /etc/php. d/40-ssh2. ban đầu

Tôi đang sử dụng php7. 4

[root@rocky ~]# php -v
PHP 7.4.19 [cli] [built: May  4 2021 11:06:37] [ NTS ]
Copyright [c] The PHP Group
Zend Engine v3.4.0, Copyright [c] Zend Technologies
    with Zend OPcache v7.4.19, Copyright [c], by Zend Technologies
[root@rocky ~]#

Bài viết này mô tả sự cố mà tôi gặp phải khi phát triển ứng dụng SSH với PHP 8. 0 trên Windows 10 và giải pháp

Môi trường

  • Windows 10 Chuyên nghiệp
  • XAMPP 8. 0. 6 – 2021-05-11
  • PHP8. 0. 6

Mã ví dụ

1

2

3

4

5

6

7

8

9

10

11

12

13

$kết nối = ssh2_connect[$host, $port, array['hostkey'=>'ssh-rsa']];

 

if [ssh2_auth_pubkey_file[

                        $kết nối,

                        $tên người dùng,

                        $filename_pub,

                        $filename_prv,

                        $filename_pwd]]

{

        echo "Xác thực khóa công khai thành công\n";

} khác {

        chết['Xác thực khóa công khai không thành công'];

}

Dòng mã có vấn đề

1

$kết nối = ssh2_connect[$host, $port, array['hostkey'=>'ssh-rsa']];

Tạo ra lỗi này

1

2

3

4

Lỗi nghiêm trọng. Không phát hiện được Lỗi. Gọi đến hàm không xác định ssh2_connect . [] in ssh-copy-id.php. 17

Ngăn xếp dấu vết.

#0 {chính}

  ném vào ssh-copy-id.php trên dòng 17

Sau đó tôi đã kiểm tra php. ini để xác minh rằng phần mở rộng PHP extension=php_ssh2. dll đã được tải. Nó không phải là

Tôi đã bỏ ghi chú [đã bật] dòng này và kiểm tra kỹ rằng php_ssh2. dll nằm trong thư mục ext

Sau đó, tôi nhận được một lỗi khác

1

Cảnh báo. PHP Khởi động. Không thể to tải thư viện động . dll' 'php_ssh2.dll' [đã thử. C. \xampp\php\ . ext\php_ssh2.dll [Mô-đun được chỉ định . could not be found], C:\xampp\php\ . ext\php_php_ssh2.dll. dll [Mô-đun được chỉ định module could not be found]] in Unknown on line 0

Hmm, DLL ở đó, nhưng tôi không biết DLL đó đến từ đâu hoặc phiên bản của nó

Tôi đã mở thư mục trong Windows Explorer, nhấp chuột phải vào tệp và chọn Thuộc tính. Tab chi tiết hiển thị như sau

Phiên bản Sản phẩm DLL là 7. 4. 13

Một phương pháp khác sử dụng PowerShell

1

2

3

4

powershell '[Nhận vật phẩm ". /php_ssh2. dll"]. Thông tin phiên bản. Phiên bản sản phẩm'

 

Đầu ra.

7. 4. 13

Cái nào cũng hiển thị phiên bản là 7. 4. 13. PHP 8 có lẽ cần một phiên bản mới hơn

Ghi chú. sau này trong bài viết này, tôi khám phá ra lý do tại sao. PHP có phiên bản API mở rộng

Giải pháp

Vào trang tải xuống PECL cho SSH2, tôi đã tải xuống phiên bản gói mới nhất, 1. 3. 1 cho 64-bit An toàn luồng VS16. Tôi chọn VS16 vì XAMPP phiên bản 8. 0. 6 chỉ định VS16. VS16 có nghĩa là trình biên dịch được đóng gói với Visual Studio 2019. []

Sử dụng các phương pháp trước đó, tôi đã kiểm tra phiên bản. Gói SSH2 phiên bản 1. 3. 1 chứa phiên bản DLL 8. 0. 0. Cần làm việc. Đã tải xuống tệp zip, giải nén và sao chép thủ công tệp DLL và PDB vào thư mục ext

Sau đó tôi đã thử lại chương trình của mình và thành công

1

2

php ssh-bản sao-id.php

Khóa Công khai Xác thực Thành công

Thông tin chi tiết

XAMPP Phiên bản 8. 0. 6

Vì sự cố xảy ra trên hệ thống sử dụng XAMPP 8. 0. 6, tôi muốn kiểm tra lại xem XAMPP có vấn đề gì không. Điều này có nghĩa là tạo một hệ thống mới và cài đặt XAMPP

Tôi đã tạo một máy ảo với Windows 10 Professional và cài đặt XAMPP 8. 0. 6. Sau đó tôi đã kiểm tra C. thư mục \xampp\php\ext. php_ssh2. không tìm thấy dll. Điều này có nghĩa là ai đó đã sao chép DLL theo cách thủ công từ bản cài đặt cũ hơn sang hệ thống có vấn đề của tôi

XAMPP không phải là nguồn gốc của vấn đề. Lỗi của con người rất có thể là nguồn gốc của vấn đề

Phát hiện tiện ích mở rộng

Đoạn mã sau sẽ phát hiện nếu tiện ích mở rộng được cài đặt

1

2

3

4

nếu [. extension_loaded['ssh2']] {

        echo 'Lỗi. Chương trình này yêu cầu phần mở rộng PHP ssh2' . PHP_EOL;

        thoát[1];

}

Tuy nhiên, ví dụ này không ngăn thông báo cảnh báo PHP nếu tiện ích mở rộng được cài đặt nhưng không tải đúng cách

1

Cảnh báo. PHP Khởi động. Không thể to tải thư viện động . 'ssh2' [tried: C. \xampp\php\ . ext\ssh2 [The specified module could not be found], C:\xampp\php\ . ext\php_ssh2.dll [Mô-đun được chỉ định module could not be found]] in Unknown on line 0

Tệp PHP INI

Để xác định php. ini, hãy thực hiện lệnh này

1

php --ini

Ghi chú. Nếu bạn đã cấu hình Apache với PHP, bạn sẽ có hai hoặc nhiều php. vị trí ini. Một cho CLI và một cho Apache. Trong trường hợp của tôi, tôi cài đặt PHP-FPM, vì vậy có một phần ba

Đối với Apache, tạo một tệp PHP “không dễ tìm” với nội dung sau

1

2

20200930

  • Phần mở rộng PHP => 20200930
  • Tiện ích mở rộng Zend => 420200930
  • Bản dựng tiện ích mở rộng Zend => API420200930,TS,VS16
  • Bản dựng tiện ích mở rộng PHP => API20200930,TS,VS16
  • Tôi không biết về phiên bản API. Chi tiết lỗi từ PHP 8. 1

    Cảnh báo. Khởi động PHP. ssh2. Không thể khởi tạo mô-đun
    Mô-đun được biên dịch với API mô-đun=20200930
    PHP được biên dịch với API mô-đun=20210902

    Chuỗi TS,VS16 có nghĩa là Thread-Safe Visual Studio 2019. Điều đó giúp xác định cách biên dịch và xây dựng php_ssh2. dll

    Đang tải tiện ích mở rộng khi chạy

    CLI có thể tải tiện ích mở rộng PHP bằng tùy chọn dòng lệnh

    1

    2

    3

    php -d tiện ích mở rộng=C:/xampp/php/ . ext/php_ssh2 test.php

     

    php -d tiện ích mở rộng=php_ssh2 test.php

    Điều này hữu ích khi phát triển ngoại lệ và xử lý lỗi cho tiện ích mở rộng

    câu hỏi chưa được giải quyết

    Windows 10 Chuyên nghiệp

    • DLL này có tương thích với PHP 8 không. 1 vì phiên bản đó không được đề cập?
      • Không. Kiểm tra sơ bộ kết quả trong lỗi
        • Cảnh báo PHP. Khởi động PHP. Không thể tải thư viện động ‘php_ssh2. dll'…
      • Vấn đề GitHub này báo cáo vấn đề tương tự

    Ubuntu 20. 04

    • Xác thực hỗ trợ LIBSSH2 trên Ubuntu 20. 04 với PHP 8. 0 và PHP8. 1

    Thêm thông tin

    • Vỏ bảo mật PHP2
    • LIBSSH2
    • Các ràng buộc cho thư viện libssh2
    • GitHub. Mã nguồn

    Thẻ bài viết

    thẻ. PHP, PHP8, SSH

    Tóm lược

    Để cài đặt các ràng buộc LIBSSH2 cho PHP 8 trên Windows 10, hãy hoàn thành các bước sau

    • Tải xuống các phiên bản chính xác từ đây
    • Giải nén gói và sao chép php_ssh2. dll và tùy chọn php_ssh2. pdf vào thư mục mở rộng PHP của bạn. Trên hệ thống của tôi đó là C. \xampp\php\ext
    • chỉnh sửa php. ini và bỏ ghi chú hoặc thêm dòng extension=php_ssh2. dll

    Phát triển phần mềm không chỉ là viết mã. Chúng ta cần biết cách định cấu hình hệ thống và ghi lại các quy trình đó. Ngoài ra, điều quan trọng là chúng ta cần viết mã hoặc tập lệnh để định cấu hình và kiểm tra môi trường của mình. Không có gì tệ hơn là làm việc nhiều giờ, phát hành một sản phẩm tuyệt vời mà sau đó trở thành cơn ác mộng hỗ trợ khách hàng

    Tín dụng nhiếp ảnh

    Tôi viết bài miễn phí về công nghệ. Gần đây, tôi đã biết về Pexels. com cung cấp hình ảnh miễn phí. Hình ảnh trong bài viết này được cung cấp bởi Pixabay tại Pexels

    John Hanley

    Tôi thiết kế phần mềm cho các hệ thống cấp doanh nghiệp và trung tâm dữ liệu. Nền tảng của tôi là hơn 30 năm về ảo hóa lưu trữ [SCSI, FC, iSCSI, mảng đĩa, hình ảnh]. Hơn 20 năm trong lĩnh vực nhận dạng, bảo mật và pháp y

    Trong hơn 14 năm qua, tôi đã làm việc trong lĩnh vực đám mây [AWS, Azure, Google, Alibaba, IBM, Oracle] để thiết kế các giải pháp phần mềm lai và đa đám mây. Tôi là một MVP/GDE với một số

    Làm cách nào để bật ssh2 trong PHP?

    Nếu bất kỳ ai gặp sự cố khi cài đặt SSH2, đây là cách tôi đã thực hiện. .
    Tải xuống thư viện SSH2 PECL từ PHP. net [chọn phiên bản phù hợp]
    Sao chép libssh2. dll vào thư mục System32 [x86] hoặc SysWOW64 [x64]
    Sao chép php_ssh2. dll và php_ssh2. .
    Di dời ';' . .
    Khởi động lại Apache

    Phần mở rộng ssh2 PHP là gì?

    Tiện ích mở rộng SSH2 cung cấp các chức năng để truy cập máy từ xa bằng giao thức SSH và SFTP an toàn .

    Chức năng của ssh2 là gì?

    Gen này mã hóa một loại protein tyrosine phosphatase đóng vai trò chính trong việc điều hòa các sợi actin . Protein được mã hóa khử phospho hóa và kích hoạt cofilin, thúc đẩy quá trình khử polyme hóa sợi Actin.

    Làm cách nào để cài đặt ssh2 trên Ubuntu?

    Ubuntu 16. 04 LTS – Cách cài đặt tiện ích mở rộng ssh2 php7 .
    Bước 1 – Cập nhật kho lưu trữ
    Bước 2 – Cài đặt các gói bằng các lệnh sau
    Bước 3 – Bạn phải Tải xuống nguồn từ trang web chính thức của lib ssh2 và cài đặt
    Bước 4 – Giải nén tệp zip
    Bước 5 – Điều hướng đến thư mục php

    Chủ Đề