php

Hướng dẫn dùng linux exec trong PHP

Cách gỡ lỗi các vấn đề Shell_exec

OK, ở đây chúng tôi có một vấn đề: một số thứ hoạt động trong thiết bị đầu cuối và không hoạt động trong Shell_exec của php [hoặc exec, spawn, bất cứ điều gì]. Hãy nghĩ xem: sự khác biệt giữa Bạn và php là gì? Đây là ba:

PHP được thực thi từ các quy tắc máy chủ HTTP

Thật vậy, thiết bị đầu cuối của bạn đang chạy từ yourname user và php được thực thi từ www-data. Vì vậy, ý tưởng đầu tiên là mở terminal từ người dùng www-data Và thử cùng một lệnh. Vì thế....

  • Mở tệp /etc/passwd, Tìm dòng với người dùng www-data Và thay đổi tên đăng nhập Shell [cái cuối cùng] từ /bin/false [Hoặc bất cứ thứ gì] thành /bin/bash.
  • Mở thiết bị đầu cuối của www-data: su www-data
  • Hãy thử php -v hoặc bất cứ điều gì bạn không thể thực hiện từ php. Nếu nó không hoạt động - Bạn sẽ thấy các bản ghi Nice và sẽ có thể gỡ lỗi.
  • Đừng quên sửa lại tệp /etc/passwd Trong khi bạn đã hoàn tất

PHP được thực thi từ PHP.

PHP là hoang tưởng enogh và có rất nhiều tùy chọn trong cấu hình Apache/nginx và php.ini có thể phá vỡ nỗ lực của bạn.

Đây là một chút phức tạp để gỡ lỗi. Có hai lựa chọn ở đây:

  • Kích hoạt nhật ký trong trình duyệt và xem vấn đề. Chỉnh sửa php.ini, Bật display_errors Và tất cả các cờ khác để xem lỗi trong trình duyệt. Họ Bạn có thể đọc và gỡ lỗi chúng.

  • Lấy Shell của www-data [Xem phần đầu tiên] và thực hiện một cái gì đó như

echo '' | php

sẽ thực thi cùng một mã php trong bảng điều khiển và bạn sẽ có thể thấy lỗi và gỡ lỗi.

PHP được thực thi từ SELinux/apparmor

Selinux và apparmor là những thứ bảo mật cấm các ứng dụng thực hiện các hành động cụ thể [ví dụ: sinh ra các ứng dụng khác hoặc một số ứng dụng cụ thể khác]. Có lẽ nó được kích hoạt trên máy chủ của bạn.

Để kiểm tra - vô hiệu hóa selinux/apparmor và kiểm tra xem có vấn đề gì không.

Để khắc phục - đọc hướng dẫn thích hợp và sửa các quy tắc cho phép đối với trường hợp của bạn.

Chủ Đề