PHPのshell_execを通じてシェルスクリプトを実行します。
シェルスクリプトは Python に対して実行されます。
Python スクリプト、os.path.expanduser('~')
Centos システムでは、/root/ が取得されます。
Debian システムでは、/home/www が取得されます。
PHP の実際のバージョン ユーザーは www ですが、上記のシェル スクリプトは root 権限で実行されます。
Centos では、root ユーザーのホーム ディレクトリが取得されます
/root/
、Debian では、www ユーザーのホーム ディレクトリが取得されます
/home/www
一貫性を保つ方法については、私は少し理解しています。混乱した。
あなたはファイルをchownしました、
phpでget_current_userを使用すると、すべてwwwになるはずです
phpが実行されるとき、それはWebサーバーの現在のユーザーであるため、次のようになりますユーザーは一貫性がありません。一貫性を保ちたい場合は、~ を使用しないでください。または、シェルで Python を実行するときに www ユーザーを使用してください
実際、これは、php 実行の現在のユーザーも意味します。 Centos では root です。 。 。
ファイルを chown します。
php で get_current_user を使用します。すべて www になるはずです
これは問題ではありません。
php が実行されるとき、それは Web サーバーの現在のユーザーであるため、直接シェル内のユーザーとは矛盾します。一貫性を保ちたい場合は、実行時に ~ を使用しないでください。または www ユーザーを使用してください。シェル内の Python
実際、Centos で php を実行する現在のユーザーが root であることも示しています。 。 。
いくつかのエラーは解決されており、一貫性があります。
これで、すべて www ユーザーになります。
php スクリプト (www ユーザー) -> C (特権 root ユーザー) -> python (代わりに、www ユーザー) Python が www のメイン ディレクトリを取得する方法がよくわかりません。
シェル ID -u は 0、つまりルートです。論理的には、ルートのホーム ディレクトリを取得する必要があります。
代わりに、Python は実際の PHP ユーザー www のホーム ディレクトリを取得します。