Php exec trả về giá trị 2

Mặc dù PHP là một ngôn ngữ mạnh mẽ với nhiều tiện ích mở rộng có sẵn để xử lý các thư viện chuyên dụng, nhưng bạn có thể thấy hữu ích khi có thể chạy các chương trình bên ngoài khi cần thiết, đặc biệt nếu bạn chạy Unix nơi HĐH đi kèm với nhiều chương trình cài sẵn hơn

Trong PHP có hai phương thức quan trọng để thực thi chương trình, đó là exec() và passthru(). Cả hai tham số này đều nhận tối thiểu một tham số, đó là tên của chương trình bạn muốn chạy, nhưng điểm khác biệt giữa chúng là hàm exec() chạy chương trình sau đó gửi lại dòng cuối cùng được xuất ra từ chương trình đó làm giá trị trả về của nó. Mặt khác, hàm passthru() chạy chương trình được chỉ định và in ra tất cả đầu ra mà chương trình tạo ra. Gọi exec() thường được ưu tiên khi đầu ra của chương trình của bạn không liên quan, trong khi passthru() tự động in đầu ra của bạn. Đây là cả hai trong hành động


Cả hai lệnh này đều có sẵn trên các hộp Unix tiêu chuẩn. Lưu ý rằng do thời gian hoạt động thường chỉ trả về một dòng, nên việc sử dụng print exec() hay passthru() không thành vấn đề

Nếu bạn chuyển tham số thứ hai và thứ ba cho exec(), đầu ra của lệnh sẽ được đưa vào tham số hai dưới dạng một mảng với mỗi phần tử một dòng và giá trị trả về của lệnh sẽ được đưa vào tham số ba. Tương tự, nếu bạn truyền tham số thứ hai cho passthru() thì tham số đó sẽ chứa đầy giá trị trả về của lệnh

Ví dụ


Ví dụ đó sẽ hoạt động tốt trên Windows cũng như nhiều phiên bản Unix

Ghi chú của tác giả. Nếu máy chủ của bạn là hộp Unix, hãy thử sử dụng passthru("fortune") để nhận hệ thống báo giá ngẫu nhiên nhanh chóng và dễ dàng ở cuối trang của bạn. Lưu ý rằng fortune có thể không được cài đặt hoặc không có sẵn cho tập lệnh PHP của bạn - hãy liên hệ với quản trị viên hệ thống của bạn để tìm hiểu

Có sẵn các hàm thực thi khác, đáng chú ý là shell_exec() và system(), tuy nhiên chúng hầu như không liên quan - ví dụ: shell_exec() hoạt động giống hệt như toán tử backtick mà chúng ta đã xem xét trước đó

Ghi chú của tác giả. Lấy đầu vào của người dùng và chuyển nó đến một trong các chức năng thực thi chương trình này có khả năng gây tử vong - người dùng có thể dễ dàng bỏ qua bảo mật và làm những điều xấu với máy chủ của bạn. Nếu bạn thực sự phải sử dụng dữ liệu người dùng làm đầu vào cho lệnh gọi chương trình của mình, trước tiên hãy chuyển dữ liệu đó qua hàm escapeshellcmd() đặc biệt - hàm này nhận dữ liệu đầu vào của bạn và trả về ở định dạng an toàn có thể sử dụng được

Cho đến giờ chúng ta đã xem xét việc thực thi các chương trình bên ngoài bằng exec() và system(), nhưng có một chức năng thứ ba cũng cho phép bạn thực thi bên ngoài, mặc dù nó hoạt động hoàn toàn khác so với hai chức năng kia. Hàm virtual() chỉ nhận một tham số và, bất thường, chỉ hoạt động trên máy chủ web Apache và SunONE. Không giống như exec() và system(), virtual() thực hiện một yêu cầu ảo tới máy chủ web cho một tệp, gần như thể chính tập lệnh của bạn là một ứng dụng khách. Yêu cầu này được xử lý như bình thường và đầu ra của nó được gửi lại cho tập lệnh của bạn

Ví dụ: sử dụng phương pháp này, bạn có thể thực thi tập lệnh Perl từ tập lệnh PHP của mình hoặc thực sự kỳ lạ là thực thi tập lệnh PHP khác từ tập lệnh PHP của bạn. Thoạt đầu, việc sử dụng virtual() có vẻ không rõ ràng, đơn giản vì chúng rất ít và cách xa nhau. Tuy nhiên, nếu bạn có một trang trên trang web của mình yêu cầu thực thi đặc biệt, thì bạn phải sử dụng exec(), chuyển vào tên của chương trình xử lý trang cũng như chính tên tệp của trang, bạn có thể sử dụng include()

Bạn muốn học PHP 7?

Hacking with PHP đã được cập nhật đầy đủ cho PHP 7 và hiện có sẵn dưới dạng PDF có thể tải xuống. Nhận hơn 1200 trang học PHP thực hành ngay hôm nay

Nếu điều này hữu ích, vui lòng dành chút thời gian để nói với những người khác về Hacking với PHP bằng cách tweet về nó

Hàm shell_exec() là một hàm sẵn có trong PHP, được sử dụng để thực thi các lệnh thông qua shell và trả về đầu ra hoàn chỉnh dưới dạng một chuỗi. Shell_exec là bí danh của toán tử backtick, dành cho những toán tử đã sử dụng *nix. Nếu lệnh không thành công, trả về NULL và các giá trị không đáng tin cậy để kiểm tra lỗi

cú pháp

string shell_exec( $cmd )

Thông số. Hàm này chấp nhận một tham số $cmd được sử dụng để giữ lệnh sẽ được thực thi

Giá trị trả về. Hàm này trả về lệnh đã thực hiện hoặc NULL nếu xảy ra lỗi

Ghi chú. Chức năng này bị tắt khi PHP đang chạy ở chế độ an toàn

Thí dụ




string shell_exec( $cmd )
1

string shell_exec( $cmd )
2

string shell_exec( $cmd )
3

string shell_exec( $cmd )
4

string shell_exec( $cmd )
5
string shell_exec( $cmd )
6
gfg.php
index.html
geeks.php
0
gfg.php
index.html
geeks.php
1

string shell_exec( $cmd )
2

gfg.php
index.html
geeks.php
3

gfg.php
index.html
geeks.php
4

gfg.php
index.html
geeks.php
5
gfg.php
index.html
geeks.php
6
gfg.php
index.html
geeks.php
7

gfg.php
index.html
geeks.php
8

đầu ra

gfg.php
index.html
geeks.php

hàm exec()

Hàm exec() là một hàm sẵn có trong PHP, được sử dụng để thực thi một chương trình bên ngoài và trả về dòng cuối cùng của kết quả. Nó cũng trả về NULL nếu không có lệnh nào chạy đúng

cú pháp


2

Thông số. Hàm này chấp nhận ba tham số như đã đề cập ở trên và được mô tả bên dưới

  • lệnh $. Tham số này được sử dụng để giữ lệnh sẽ được thực thi
  • đầu ra $. Tham số này được sử dụng để chỉ định mảng sẽ được lấp đầy với mọi dòng đầu ra từ lệnh
  • $return_var. Tham số $return_var xuất hiện cùng với đối số đầu ra, sau đó nó trả về trạng thái của lệnh được thực thi sẽ được ghi vào biến này

Giá trị trả về. Hàm này trả về lệnh đã thực hiện, đảm bảo đặt và sử dụng tham số đầu ra

Thí dụ




string shell_exec( $cmd )
1


20

gfg.php
index.html
geeks.php
5

22____123

24
gfg.php
index.html
geeks.php
1

gfg.php
index.html
geeks.php
8

đầu ra

string shell_exec( $cmd )
0

Người giới thiệu

  • http. //php. net/thủ công/vi/chức năng. shell-exec. php
  • http. //php. net/thủ công/vi/chức năng. giám đốc điều hành. php

PHP là ngôn ngữ kịch bản phía máy chủ được thiết kế dành riêng cho phát triển web. Bạn có thể học PHP từ đầu bằng cách làm theo Hướng dẫn PHP và Ví dụ về PHP này

exec trả về cái gì trong PHP?

Hàm exec() là một hàm có sẵn trong PHP, dùng để thực thi một chương trình bên ngoài và trả về dòng cuối cùng của kết quả . Nó cũng trả về NULL nếu không có lệnh nào chạy đúng.

Shell_exec trả về cái gì?

shell_exec — Thực thi lệnh thông qua shell và trả về kết quả đầu ra hoàn chỉnh dưới dạng chuỗi .

PHP exec có đợi cho đến khi hoàn thành không?

PHP exec sẽ đợi cho đến khi chương trình được gọi kết thúc thực hiện , trước khi xử lý dòng tiếp theo, trừ khi bạn sử dụng & ở cuối chuỗi để chạy chương trình ở chế độ nền.

Sự khác biệt giữa exec và Shell_exec là gì?

shell_exec trả về tất cả luồng đầu ra dưới dạng chuỗi. exec trả về dòng cuối cùng của đầu ra theo mặc định, nhưng có thể cung cấp tất cả đầu ra dưới dạng một mảng được chỉ định làm tham số thứ hai .