2009-04-30 15 views
27

私は外国のLinuxシステム上にあり、apacheが動作する(そしてPHPもそうである)ユーザを特定する必要があります。apache linux user from php

目的: 私はスクリプトの所有者を取得する必要があります(これはSplFileInfoを使用できるので問題はありません)、それをApacheプロセスの所有者と比較してください。

代替提案はありますか。

よろしく、 マリオ

編集: 追加情報:

スクリプト大きな画像から親指を生成するためのXMLファイルを使用すると、サムネイルジェネレータです。スクリプトは、フォルダを作成してファイルを書き込む必要があります。私はPHPの設定に影響を与えることはできませんし、私はシェルへのアクセス権がありませんので、これは非常に静かに行われなければなりません。 作成プロセスは例外によって停止し、失敗した場合にメールを送信します。ほとんどのphpの関数は失敗時に例外をスローすることができないので、私は自分がいる環境を判断するためにいくつかの手動チェックが必要です。したがって、それをいくつかのディレクトリまたはファイル所有者と比較するためにはapacheユーザが必要です。

+0

オプションとして、単に/ tmpを使用できます。これは誰にとっても書き込み可能です。 – Anonymous

+0

これは、私たちの場合には役に立ちません。なぜなら、docrootの外部から生成された画像は提供できないからです。 –

答えて

52

あなたはwhoamiをを実行するために、PHP exec関数を呼び出すことができます。

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

thanx grant!ここで提供される両方の方法が非常に適しています。私は、posix関数が利用可能であると主張することはできないので、grantのメソッドを使用します。 –

+1

safe_modeが有効で、whoamiがsafe_mode_exec_dirの外にある場合、exec()は動作しません。 – Anonymous

+0

絶対に正しいですが、私の目標環境ではこれが最善の解決策です。 (no safe_mode;)) –

1

phpinfoは、多くのシステム情報をダンプします。 apache2のインストールには、apacheユーザーとグループIDを表示するセクションがあります。 phpinfo()の呼び出しを1行だけ持つPHPスクリプトを作成し、Webブラウザで開きます。

+0

これは目的ではありません;) 私はPHPの情報を介してユーザーを取得する方法を知っています...私はスクリプト内から文字列として名前を取得する必要があります。 –

+0

... phpinfo(INFO_MODULES)を解析することはできません;) –

8

は、ここではいくつかの複雑な回答可)((posix_getuid)とposix_getpwuid

5

を参照してください。

は、これが私の作品:

$user = getenv('APACHE_RUN_USER'); 

これはちょうどこの質問を頼まれたので、のapacheするために追加され、新たなものですが、それは今間違いなくありますかどうかわかりません。

+0

私の場合、動作しませんでした。空の文字列を返したところです。 –