phiên bản ngắn của câu hỏi:PHP: get_current_user() vs exec ('whoami')
sự khác biệt giữa get_current_user();
và exec('whoami');
là gì?
Long phiên bản của câu hỏi:
- Tôi đang trên một Localhost XAMPP trên máy Mac.
- Tôi đang sử dụng Apache, xây dựng một trang web PHP dựa trên một thư mục (hãy gọi nó là folderxyz) trong thư mục htdocs (var/www trong một số hương vị của Linux + Apache).
- Tôi đã chơi xung quanh với một kết nối cơ sở dữ liệu, thử nghiệm ra PDO :: ERRMODE_EXCEPTION mô tả ở đây: Link
Và tôi đã nhận lỗi này:
file_put_contents(PDOErrors.txt): failed to open stream: Permission denied...
Vì vậy, tôi đã làm một số nghề thám tử xung quanh và nó có vẻ như để sửa lỗi này, tôi cần thay đổi cài đặt CHMOD
của tệp PDOErrors.txt đến 777.
Tuy nhiên, câu hỏi của tôi là về một cái gì đó khác. Trong quá trình này, tôi nhận ra rằng tôi không hiểu rõ khái niệm về user
trong Apache, PHP và MySQL.
- Tài liệu PHP nói rằng
get_current_user()
"Gets tên của chủ sở hữu của các tập lệnh PHP hiện tại"Link - Tài liệu PHP nói rằng
exec('whoami')
lợi nhuận "tên người dùng sở hữu chạy php trình/httpd "Link - Khi tôi sử dụng
get_current_user()
, tôi nhận đượcfirstnamelastname
, là tên tài khoản của tôi trên máy Mac. - Khi tôi sử dụng
exec('whoami')
, tôi nhận đượcdaemon
.
Vậy ...
- mối quan hệ giữa
firstnamelastname
vàdaemon
là gì? - Mối quan hệ giữa "chủ sở hữu của tập lệnh PHP hiện tại" và "tên người dùng sở hữu quá trình chạy php/httpd" là gì?
- Ai cần có quyền ghi vào PDOErrors.txt? Có phải là
firstnamelastname
hoặcdaemon
? - Ai cần có quyền ghi vào PDOErrors.txt?Nó là Apache hay PHP (hoặc cả hai)?
- Khái niệm về hệ số tài khoản
root
giống nhau ở bất kỳ đâu ở đây?
Edit: Tôi cập nhật này để phản ánh rằng nó không phải là folderxyz mà tôi đã phải thay đổi các thiết lập CHMOD cho. Tôi đã phải thay đổi các thiết lập cho file PDOErrors.txt
OP ở đây: để tham khảo trong tương lai, tôi đưa ra một câu hỏi song song cho nền tảng Linux ở đây (với một lời giải thích trực quan kèm theo những gì đang xảy ra) : https://stackoverflow.com/questions/31389892/why-is-the-output-www-data-in-one-case-and-root-in-another
tôi muốn thêm để tham khảo trong tương lai, Stackoverflow sau ans wer giải thích tại sao người dùng Apache xuất hiện dưới dạng 'daemon' trên máy cục bộ, trong khi đó là' www-data' trên máy công cộng (tức là, có thể sử dụng được bởi bất kỳ ai trên internet). Tôi đã xem các thiết lập trong tệp tin Apache 'httpd.conf' trong máy cục bộ của tôi và các thiết lập' user' và 'group' đã được thiết lập thành' daemon': http://stackoverflow.com/questions/26063556/php5- dữ liệu không chạy-as-www-data –