1

PHP スクリプトを別のユーザーとして実行するためにプールを設定しようとしていますが、うまくいきません。これが私がやったことのステップバイステップです(Ubuntu 16.04で):

sudo apt-get install apache2 libapache2-mod-fastcgi php7.0-fpm php7.0

a2enmod actions fastcgi alias

sudo service apache2 restart

vi /etc/apache2/sites-available/000-default.conf

ServerAdmin webmaster@localhost
DocumentRoot /var/www

<IfModule mod_fastcgi.c>
  AddHandler php7-fcgi .php
  Action php7-fcgi /php7-fcgi virtual
  Alias /php7-fcgi /usr/lib/cgi-bin/php7-fcgi
  FastCgiExternalServer /usr/lib/cgi-bin/php7-fcgi -socket /var/run/php/php7.0-fpm.sock -pass-header Authorization
  <Directory /usr/lib/cgi-bin>
    Require all granted
   </Directory>
</IfModule>

次に、「web」というユーザーを作成しました

sudo adduser web

/var/www/web に彼のホームディレクトリを設定します

新しいユーザーのプール ファイルを作成して構成します。

sudo cp /etc/php/7.0/fpm/pool.d/www.conf /etc/php/7.0/fpm/pool.d/web.conf

[web]
 ...
 user = web
 group = web
 ...
 listen = /run/php/php7.0-fpm.web.sock
 ...
 listen.owner = web
 listen.group = web

sudo service php7.0-fpm reload

vi /etc/apache2/sites-available/web.conf

ServerAdmin webmaster@localhost
DocumentRoot /var/www/web

<IfModule mod_fastcgi.c>
  AddHandler php7-fcgi-web .php
  Action php7-fcgi-web /php7-fcgi-web virtual
  Alias /php7-fcgi-web /usr/lib/cgi-bin/php7-fcgi-web
  FastCgiExternalServer /usr/lib/cgi-bin/php7-fcgi-web -socket /var/run/php/php7.0-fpm.web.sock -pass-header Authorization
  <Directory /usr/lib/cgi-bin>
    Require all granted
  </Directory>
</IfModule>

sudo a2ensite web.conf
sudo service apache2 reload

PHPスクリプトが適切なユーザーとして実行されるようにするために、次のスクリプトを /var/www および var/www/web に配置します

<?php
  $processUser = posix_getpwuid( posix_geteuid() );
  var_dump($processUser);
?>

/var/www/user.php を実行すると、正しい「www-data」が表示されます。しかし、/var/www/web/user.php を実行すると、「web」と表示されるはずなのに「www-data」と表示されます。

では、私の Apache 設定の何が問題なのですか?

4

0 に答える 0