簡體   English   中英

我可以在PHP中找到運行Web服務器的用戶嗎?

[英]Can I find which user the web server is being run as in PHP?

我正在用PHP編寫一個簡單的Web應用程序,需要對服務器上的目錄具有寫入權限,如果目錄不可寫我想顯示一條錯誤消息,說明將目錄的所有者設置為webserver是誰正在運行(例如,www-data,nobody),但由於大多數人不知道這一點,能夠告訴他們將目錄列入誰的狀態會很好。 是否可以從PHP中找到它?

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

我使用的快速和骯臟的技巧是將文件寫入/tmp/ 它應該使用PHP進程使用的用戶和組創建。

在Unix平台上,只要安裝或編譯了posix擴展,這個解決方案即使在安全模式下也可以工作。

$user = posix_getpwuid(posix_geteuid());
echo $user['name'];

文件在這里

如果在linux / unix上:

<?php
$temp = tmpfile();
print_r(posix_getpwuid(fileowner($temp)));
?>

在一些使用echo exec('whoami');服務器中echo exec('whoami'); 或者exec('whoami',$out); echo $out; exec('whoami',$out); echo $out; 什么都不返回,但在每種情況下,您都可以使用get_current_user獲取當前用戶

<?php
echo get_current_user();
?>

如果你可以運行一些bash,你可以使用whoami或者你可以在/proc

該錯誤消息在Windows服務器環境中崩潰。 “請確保Web服務器具有對目錄的寫訪問權限”可能是更好的錯誤消息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM