Hàm popen() trong PHP

24/11/2020 - lượt xem
Chia sẻ
 
Rate this post

Định nghĩa.

Hàm popen() mở một đường ống dẫn đến chương trình được chỉ định command parameter.

Cú pháp.

Cú pháp:

popen ( string $command , string $mode ) : resource

Trong đó.

  • $command Lệnh.
  • $mode Chế độ.

Giá trị trả về.

  • Trả về một con trỏ tệp giống hệt với con trỏ được trả về bởi fopen (), ngoại trừ việc nó là một hướng (chỉ có thể được sử dụng để đọc hoặc ghi) và phải được đóng bằng  pclose(). Con trỏ này có thể được sử dụng với fgets (), fgetss () và fwrite (). Khi chế độ là ‘r’, con trỏ tệp được trả về bằng STDOUT của lệnh, khi chế độ là ‘w’, con trỏ tệp trả về bằng STDIN của lệnh.
  • Nếu xảy ra lỗi, trả về FALSE.

ghi chú.

  • Ghi chú: Nếu bạn đang tìm kiếm hỗ trợ hai chiều (hai chiều), hãy sử dụng proc_open ().
  • Lưu ý: Khi safe mode được bật, bạn chỉ có thể thực thi các tệp trong safe_mode_exec_dir. Vì lý do thực tế, hiện tại không được phép có .. các thành phần trong đường dẫn đến tệp thực thi.
  • Cảnh báo Với chế độ an toàn được bật, chuỗi lệnh được thoát bằng Escapepeshellcmd (). Như vậy, echo y | echo x trở thành echo y \ | tiếng vang x.

Ví dụ.

Ví dụ # 1.

code.

<?php
$handle = popen("/bin/ls", "r");
?>
  • Nếu không tìm thấy lệnh được thực thi, thì một tài nguyên hợp lệ sẽ được trả về. Điều này có vẻ kỳ quặc, nhưng có lý; nó cho phép bạn truy cập bất kỳ thông báo lỗi nào do shell trả về:

Ví dụ # 2.

<?php
error_reporting(E_ALL);

/* Add redirection so we can get stderr. */
$handle = popen('/path/to/executable 2>&1', 'r');
echo "'$handle'; " . gettype($handle) . "\n";
$read = fread($handle, 2096);
echo $read;
pclose($handle);
?>

Hàm liên quan.

  • pclose() – Đóng con trỏ tệp quy trình
  • fopen()  – Mở tệp hoặc URL
  • proc_open() – Thực thi một lệnh và mở con trỏ tệp cho đầu vào / đầu ra

Thông tin thêm.

  • Nếu bạn cố gắng thực thi một lệnh trong Windows, tập lệnh PHP thường đợi cho đến khi quá trình kết thúc. Việc thực thi các quy trình dài hạn sẽ tạm dừng tập lệnh PHP ngay cả khi bạn không muốn đợi quá trình kết thúc.
    Thật không dễ dàng để tìm thấy ví dụ tuyệt đẹp này về cách bắt đầu một quá trình trong Windows mà không cần đợi nó kết thúc:
    <?php
    $commandString = 'start /b c:\\programToRun.exe -attachment "c:\\temp\file1.txt"';
    pclose(popen($commandString, 'r'));
    ?>
  • Nếu, trên windows, bạn cần khởi động tệp hàng loạt cần đặc quyền của quản trị viên, thì bạn có thể tạo lối tắt đến tệp hàng loạt, nhấp vào thuộc tính, chọn “chạy với tư cách quản trị viên” trên một trong các trang thuộc tính, rồi nhấn đúp- nhấp vào phím tắt một lần (để khởi tạo doanh nghiệp “chạy với tư cách quản trị viên”).
    sử dụng popen (“/ path / to / shortcut.lnk”) sau đó sẽ chạy tệp hàng loạt của bạn với đặc quyền của quản trị viên.
    tiện dụng khi bạn muốn sử dụng cli php để thực hiện một số tác vụ chạy dài và php-cli cần sử dụng các phiên 

Các bạn có thể xem chi tiết hơn trên php.net.

Hi vọng với bài viết này, bạn đã hiểu rõ ứng dụng của hàm popen() trong PHP. Nếu bạn thấy bài viết hay và có ý nghĩa hãy like và chia sẻ bài viết này để mọi người cùng nhau học tập nhé. Cảm ơn các bạn đã ghé thăm codetutam.com

 

    Liên hệ với chúng tôi

    Để lại thông tin để nhận được các bài viết khác

    Rate this post

    Xem thêm nhiều bài tin mới nhất về Kiến thức

    Xem thêm