Trên hầu hết các máy chủ Apache, PHP chạy như một mô-đun Apache. Đây là phương pháp cài đặt mặc định. Nhiều máy chủ có thiết lập này vì nó là mặc định và có khả năng họ không nhận ra rằng cũng có thể định cấu hình PHP dưới dạng CGI. Chạy PHP dưới dạng CGI có thể an toàn hơn đồng thời tránh các vấn đề về quyền sở hữu tệp và thư mục
PHPSuExec cung cấp cơ sở để có tất cả các tập lệnh chạy tài khoản người dùng có liên quan thay vì trong tài khoản Máy chủ Web. Cơ sở này cho phép Quản trị viên máy chủ cô lập và quản lý việc sử dụng tập lệnh độc hại hoặc bỏ chạy rất nhanh, tránh các tập lệnh không mong muốn hoặc không được phép chạy trong một khoảng thời gian dài
phpSuExec làm gì?
777 QuyềnVới các cấu hình không phải phpSuExec, PHP chạy dưới dạng Mô-đun Apache, nó thực thi với tư cách là người dùng/nhóm của máy chủ web thường là "nobody", "httpd" hoặc "apache". Trong chế độ này, các tệp hoặc thư mục mà bạn yêu cầu tập lệnh php của mình để có thể ghi cần có 777 quyền [đọc/ghi/thực thi ở cấp độ người dùng/nhóm/thế giới]. Điều này không an toàn lắm vì nó cho phép máy chủ web ghi vào tệp, nó cũng cho phép bất kỳ ai khác đọc hoặc ghi vào tệp
Trong cấu hình phpSuExec, PHP chạy dưới dạng CGI có bật "suexec" [su = người dùng chuyển đổi, cho phép một người dùng "chuyển đổi" sang người dùng khác nếu được phép] - Các tập lệnh php của bạn hiện thực thi ở cấp độ người dùng/nhóm của riêng bạn. Các tệp hoặc thư mục mà bạn yêu cầu tập lệnh php của mình để có thể ghi vào không còn cần phải có quyền 777 nữa. Trên thực tế, 777 quyền không còn được phép nữa, có 777 quyền trên tập lệnh của bạn hoặc thư mục chứa chúng sẽ không chạy và thay vào đó sẽ gây ra "500 lỗi máy chủ nội bộ" khi cố gắng thực thi chúng, điều này được thực hiện để bảo vệ bạn khỏi ai đó . Tập lệnh và thư mục của bạn hiện có thể, chỉ có tối đa 755 quyền [bạn đọc/ghi/thực thi, người khác đọc/thực thi]
Trong chế độ Mô-đun Apache cũ, có thể thao tác cài đặt PHP từ bên trong một ". htaccess" được đặt trong thư mục cấp cao nhất của tập lệnh, điều này cũng được áp dụng đệ quy cho tất cả các thư mục khác bên dưới nó
For example you could turn on the php setting "magic_quotes_gpc" with this line in .htaccess:
php_value magic_quotes_gpc on
Bây giờ, khi PHP đang chạy dưới dạng CGI và phpSuExec được bảo vệ, thao tác cài đặt PHP vẫn có thể thực hiện được tuy nhiên bạn không còn có thể sử dụng một ". htaccess" tập tin. sử dụng. htaccess với tiền tố PHP bắt buộc là "php_value" sẽ gây ra "lỗi máy chủ nội bộ 500" khi cố gắng truy cập tập lệnh. Điều này là do php không còn chạy dưới dạng mô-đun Apache, do đó Apache không thể xử lý các lệnh đó nữa
Nếu máy chủ của bạn đã hoặc đang triển khai phpSuExec, TẤT CẢ các giá trị php sẽ bị xóa khỏi máy chủ của bạn. htaccess để tránh lỗi 500 máy chủ nội bộ. Thay vào đó, bây giờ bạn sẽ tạo và sử dụng "Local php" của riêng bạn. ini" để thao tác cài đặt php mong muốn
php là gì. tập tin ini?php. ini là tệp cấu hình mà máy chủ xem xét để xem tùy chọn PHP nào đã được cung cấp cho máy chủ hoặc cài đặt của chúng là gì, nếu khác với php mặc định của máy chủ. ban đầu. Mặc dù cái tên này có vẻ cao cấp đối với những người không quen thuộc với nó, nhưng thực chất nó là một tệp văn bản đơn giản có tên php. ban đầu
Để tạo một php. ini, chỉ cần mở trình soạn thảo văn bản, thêm vào các dòng bạn cần và lưu tệp. Bạn có thể đặt tên cho tệp bất cứ điều gì bạn muốn khi lưu, để đảm bảo chế độ truyền FTP chính xác được sử dụng, bạn có thể đặt tên cho nó là "php. ban đầu. txt". Khi bạn đã định cấu hình tất cả các cài đặt của mình, hãy tải tệp lên thư mục chứa tập lệnh của bạn rồi đổi tên lại thành php. ban đầu
For example you can turn on the php setting "magic_quotes_gpc" with this line in php.ini:
magic_quotes_gpc = on
Trong nhiều trường hợp, bạn có thể cần phải có nhiều bản sao của cùng một tệp php. ini trong các thư mục khác nhau, không giống như. tập tin htaccess, php. ini không được áp dụng đệ quy cho các thư mục thấp hơn. Nếu bạn cũng cần chức năng tương tự trên tất cả các thư mục thấp hơn, thì bạn sẽ cần sao chép tệp php. ini lần lượt từng thư mục sẽ có. tập lệnh php chạy từ bên trong chúng
Đang khắc phục sự cố, đã xảy ra sự cốTập lệnh php của tôi không hoạt động hoặc tôi có thông báo lỗi
- Kiểm tra xem tập lệnh php mà bạn đang cố thực thi có quyền không quá 755 không.
644 sẽ hoạt động bình thường, đây không phải là thứ cần phải thay đổi trong hầu hết các trường hợp.
- Kiểm tra xem quyền thư mục mà tập lệnh nằm trong đó có được đặt tối đa là 755 không.
Điều này cũng bao gồm các thư mục mà tập lệnh cũng cần có quyền truy cập.- Kiểm tra xem bạn không có. htaccess với php_values bên trong nó.
Chúng sẽ gây ra lỗi 500 Máy chủ nội bộ khi cố thực thi tập lệnh.
Các giá trị php_value sẽ cần được xóa khỏi tệp của bạn. htaccess và một tệp php. ini vào vị trí của nó,
chứa các lệnh php như đã giải thích ở trên.
- Kiểm tra xem bạn không có. htaccess với php_values bên trong nó.
- Kiểm tra xem quyền thư mục mà tập lệnh nằm trong đó có được đặt tối đa là 755 không.
Vậy còn các tập lệnh php nói rằng chúng yêu cầu 777 quyền trên một số thư mục hoặc tệp của chúng để hoạt động, chẳng hạn như Joomla. , Diễn đàn, thư viện ảnh và giống nhau? . Điều này là do, giờ đây máy chủ web chạy dưới tài khoản người dùng của riêng bạn, chỉ tài khoản người dùng của riêng bạn mới cần có đầy đủ quyền ghi và thực thi
Các quy tắc này đã được áp dụng cho. cgi và. pl trong lịch sử và hiện cũng đang được áp dụng các tệp php
Lấy từ "https. // tài liệu. joomla. tổ chức/chỉ mục. php?title=How_do_phpSuExec_file_permissions_work%3F/en&oldid=908266"