2012-06-18 35 views
10

Làm cách nào để chúng tôi xác định người dùng tập lệnh php nào đang chạy khi tôi chạy tập lệnh trên máy chủ? Là nó chạy dưới cùng một người dùng như apache hoặc phpmyadmin bởi cơ hội? Câu hỏi của tôi có thể đóng khung sai nhưng tôi muốn biết những người sử dụng vì vậy mà tôi thiết lập cho phép thích hợp cho các thư mục khác nhau trong/varLàm cách nào để tìm hiểu, người dùng nào đang chạy tập lệnh php hiện tại?

+5

Googling 'php xác định người dùng' sẽ cung cấp cho bạn thông tin cần thiết –

+0

+1 yfgi .... (http://www.php.net/manual/en/function.get-current-user.php#57624) – Wrikken

+0

Bạn sẽ cần phải cung cấp thêm một số thông tin để cho phép chúng tôi giúp bạn ở đây, tôi sợ. – crmpicco

Trả lời

20

Execute whoami:

<?php echo exec('whoami'); ?> 
+0

Hmm người thứ hai downvote sau khi nó đã được chỉnh sửa. Vì nó đứng này làm việc thấy http://stackoverflow.com/questions/7771586/how-to-check-what-user-php-is-running-as – jpiasetz

+1

Hehe, chỉnh sửa nó chỉ để có thể loại bỏ downvote của tôi (nó bị khóa sau một thời gian nhất định ..) – Wrikken

+0

Cảm ơn :). Tôi đã không thực sự phàn nàn về bạn. Bạn đã đúng lol. – jpiasetz

-4

Sử dụng này:

$_SERVER['REMOTE_USER']; 

biến này có thể hoặc không được đặt.

+3

Đây không phải là những gì OP muốn. Anh ấy muốn biết người dùng * hệ thống * –

7

Nếu bạn có posix functions sẵn (kích hoạt theo mặc định) sau đó bạn có thể sử dụng posix_geteuidposix_getpwuid để có được tên của người sử dụng (ít nhất là trong môi trường không dành cho Windows) như sau:

$pwu_data = posix_getpwuid(posix_geteuid()); 
$username = $pwu_data['name']; 

khác (hơn đắt tiền) cách để làm điều đó sẽ được sử dụng một chức năng vỏ hành như exec để chạy whoami:

$username = exec('whoami'); 

hoặc thậm chí backticks (mặc dù bạn có thể cần phải cắt linebreak off):

0.123.
$username = `whoami`; 

Cá nhân tôi chỉ cần thiết để có được tên người dùng của người dùng đang chạy tập lệnh cho các tập lệnh PHP chạy trong trình bao (trên dòng lệnh). Thông thường, các tập lệnh chạy trong quá trình xây dựng phản hồi theo yêu cầu mà máy chủ web đang xử lý sẽ được chạy dưới dạng người dùng máy chủ web, chẳng hạn như www-data, apache, v.v. Trong Apache, người dùng chạy apache/Các quy trình httpd được thiết lập với chỉ thị User.

-3

Sử dụng này:

echo get_current_user(); 

Hãy chắc chắn để đọc các ý kiến ​​vì nó trông giống như câu trả lời này không thực sự làm những gì bạn muốn.

+5

Đây thực sự là "chủ sở hữu của tập lệnh PHP hiện tại" theo http://php.net/manual/en/function.get-current-user.php –

0

Không sử dụng "whoami". Khi bạn thực hiện một quá trình, người dùng sẽ không nhất thiết phải giống như người dùng hiệu quả trong khi chạy một tập lệnh. Nhưng trong mọi trường hợp "id" sẽ cung cấp nhiều thông tin hữu ích hơn. Thay vào đó hãy gọi get_current_user(). Quá dễ!

Các vấn đề liên quan