質問の短いバージョン:
get_current_user();
とexec('whoami');
の違いは何ですか?
質問の長いバージョン:
そして、私はこのエラーを受け取りました:
file_put_contents(PDOErrors.txt):ストリームを開くことができませんでした:アクセスが拒否されました...
だから私はいくつかの調査をしました、そしてこれを修正するために私はファイルPDOErrors.txtのCHMOD
設定を777に変更する必要があるようです。
しかし、私の質問は何か他のものについてです。このプロセスの間に、Apacheのuser
の概念を明確に理解していないことに気づきました。 、PHP、およびMySQL。
get_current_user()
"現在のPHPスクリプトの所有者の名前を取得する" リンクexec('whoami')
は "実行中のphp/httpdプロセスを所有するユーザー名"リンクget_current_user()
を使用すると、Macのアカウント名であるfirstnamelastname
が表示されます。exec('whoami')
を使用すると、daemon
が得られます。だから...
firstnamelastname
とdaemon
の関係は何ですか?firstnamelastname
またはdaemon
ですか?root
アカウントの概念はここのどこかに影響しますか?編集:CHMOD設定を変更する必要があったのはfolderxyzではなかったことを反映するために、これを更新しました。ファイルの設定を変更する必要がありましたPDOErrors.txt
ここにOP:将来の参考のために、私はここにLinuxプラットフォームに関する平行した質問をしました(何が起こっているのかを直感的に説明します): https://stackoverflow.com/questions/31389892/why-is- the-output-www-data-in-one-case-and-root-in-another
get_current_user()
(should)は、ファイルの所有者を返します。この場合はfirstnamelastname
です。ただし、この機能がプラットフォーム間で一貫していないという問題が報告されています。そのため、私はその出力を信頼しません。 daemon
は、Apacheが実行されているユーザーです。ls -la
を実行して、ファイルが属するユーザーとグループを見つけることができます。 。firstnamelastname
(+rw
)です。daemon
とPHPファイル、+rx
(読み取り))に対して+r
(実行して読み取る)が必要です。XAMMPのインストールでは、これを行うには、htdocs
内のすべてをパブリック読み取り可能として設定します。したがって、daemon
はそれを読み取ることはできますが、書き込むことはできません。htdocs
またはwww
ディレクトリを所有するrootアカウントがあります。これは、従来のUNIXrootユーザーの役割を果たします。ファイルの所有者/グループとプロセスの所有者に関する情報は次のとおりです。
Host:~$ ls -l /Applications/XAMPP/xamppfiles/htdocs
drwxr-xr-x 3 root admin 4096 2015-01-01 00:01 .
drwxr-xr-x 3 root admin 4096 2015-01-01 00:01 ..
-rw-r--r-- 1 firstnamelastname admin 189 2015-01-31 20:45 index.php
Host:~$ ps aux | grep httpd | head -n1
daemon 45204 0.0 0.1 2510176 10328 ?? S Tue11AM 0:01.38 /Applications/XAMPP/xamppfiles/bin/httpd -k start -E /Applications/XAMPP/xamppfiles/logs/error_log -DSSL -DPHP
デーモンユーザーがファイルを書き込み可能にしたい場合は、新しいフォルダーを作成し、グループadmin
の所有者として名前を付け(これも使用できます)、ユーザーに+rwx
を指定します。およびグループ、公開用の+rx
:
Host:~$ cd /Applications/XAMPP/xamppfiles/htdocs
Host:htdocs$ mkdir some_dir
Host:htdocs$ chmod 775 some_dir