Php exec python không hoạt động

Hàm

php
$output = shell_exec("python hello.py");

echo $output;
0 cho phép bạn chạy lệnh từ trình bao (hoặc thiết bị đầu cuối) và nhận đầu ra dưới dạng chuỗi

Vì chức năng chạy lệnh từ trình bao, bạn cần cài đặt Python và có thể truy cập từ máy tính của mình

PHP không thể chạy trực tiếp các tập lệnh Python. Nó chỉ chuyển một lệnh tới trình bao để chạy tập lệnh Python

Ví dụ: giả sử bạn có tập lệnh

php
$output = shell_exec("python hello.py");

echo $output;
0 với mã sau

print("Hello from Python 3")

Để chạy đoạn mã trên, bạn cần viết đoạn mã sau vào tệp PHP của mình

php
$output = shell_exec("python hello.py");

echo $output;

Tập lệnh Python mà bạn muốn chạy cần được chuyển làm đối số cho hàm

php
$output = shell_exec("python hello.py");

echo $output;
0

Cấu trúc

php
$output = shell_exec("python hello.py");

echo $output;
2 sẽ in đầu ra của quá trình thực thi tập lệnh

Nếu bạn thấy trình bao phản hồi bằng

php
$output = shell_exec("python hello.py");

echo $output;
3, thì điều đó có nghĩa là không thể tìm thấy chương trình
php
$output = shell_exec("python hello.py");

echo $output;
4 từ trình bao

Bạn cần chắc chắn rằng có thể tìm thấy chương trình

php
$output = shell_exec("python hello.py");

echo $output;
4 bằng cách chạy lệnh
php
$output = shell_exec("python hello.py");

echo $output;
6 như sau

________số 8

Bạn cũng có thể có một trình thông dịch Python được lưu dưới dạng

php
$output = shell_exec("python hello.py");

echo $output;
7, đây là cách Python được cài đặt trong phiên bản macOS mới nhất

Trong trường hợp này, bạn cần chạy tập lệnh bằng cách sử dụng

php
$output = shell_exec("python hello.py");

echo $output;
7 trong hàm
php
$output = shell_exec("python hello.py");

echo $output;
0

print("Hello from Python 3")
1

Trong môi trường UNIX, bạn cũng có thể chỉ định trình thông dịch Python trong tệp

$ which python
/usr/bin/python
0 dưới dạng dòng shebang

Viết trình thông dịch bạn muốn sử dụng cho tập lệnh như sau

print("Hello from Python 3")
3

Với dòng shebang được xác định, bạn có thể xóa người chạy

php
$output = shell_exec("python hello.py");

echo $output;
4 khỏi hàm
php
$output = shell_exec("python hello.py");

echo $output;
0

print("Hello from Python 3")
5

Bây giờ hãy chạy tập lệnh PHP. Bạn sẽ thấy kết quả giống như khi bạn thêm con chạy vào hàm

php
$output = shell_exec("python hello.py");

echo $output;
0

Đôi khi bạn có thể thấy trình bao phản hồi với quyền bị từ chối như sau

print("Hello from Python 3")
6

Điều này có nghĩa là trình chạy PHP không có quyền thực thi đối với tập lệnh Python mà bạn muốn chạy

Để khắc phục điều này, bạn cần thêm quyền thực thi vào tập lệnh Python với

$ which python
/usr/bin/python
4 như thế này

print("Hello from Python 3")
8

Khi bạn chạy lệnh trên từ trình bao, quyền thực thi (

$ which python
/usr/bin/python
5) sẽ được thêm vào tệp