2

HipHop VM バージョン 3.0 を fast-cgi モードで使用するようにnginxをセットアップしました。いくつかの事実:

  1. Ubuntu 13.10で実行しています
  2. nginx と hhvm は user として実行されますwww-data
  3. ユーザー www-data はグループに属していますfooers
  4. nginx のサーバー ルートは/srv/foo、単一のindex.phpファイルを含むディレクトリです。
  5. のグループ所有権は/srv/fooグループですfooers
  6. /srv/foo権限がに設定されています770

このページを表示しようとすると、404 not found が表示されますが、hhvm または nginx ログにエラーは記録されません。ただし、ページのアクセス許可を変更する775と、期待どおりに完全にサービスが提供されます。/srv/foohhvmnginx

また、www-data ユーザーのデフォルトグループを fooers グループに変更すると、770 パーミッションで動作します。ユーザーの既定のグループではない場合にのみ失敗するようです。

問題は何ですか?!?!? アクセス許可が770の場合、ディレクトリへのグループアクセスを持つユーザーwww-dataとして実行されているhhvm/nginxがアクセスできない理由を知っている人はいますか?

私の正気を確認し、グループと権限が思ったとおりであることを確認するために、サービスを開始した後、次を実行します

$> ps -aux

予想どおり、hhvm プロセスと nginx プロセスが次のように実行されていwww-dataます。

www-data  3484 .... /usr/bin/hhvm --config /etc/hhvm/server.ini --user www-data --mode daemon -vPidFile=/var/run/hhvm/pid
www-data  3617 ... nginx: worker process 

グループを確認すると、次のように表示されます。

$> groups www-data
www-data : www-data fooers

ディレクトリを確認すると、グループと所有者への 100% アクセスを確認できます。

$> ls -al
total 16
drwxr-xr-x  5 root root   4096 Mar 30 15:57 .
drwxr-xr-x 22 root root   4096 Mar 30 11:52 ..
drwxrwx---  2 root fooers 4096 Mar 30 15:39 foo

www-data許可されているユーザーとしてファイルの内容を確認すると、次のようになります。

$> sudo -u www-data ls -al /srv/foo
total 12
drwxrwx--- 2 root fooers 4096 Mar 30 15:39 .
drwxr-xr-x 5 root root     4096 Mar 30 15:57 ..
-rw-rw-r-- 1 root fooers   38 Mar 30 15:39 index.php

fooers グループに属していないユーザーで上記を試すと、失敗します。

これが私のもの/etc/hhvm/server.iniです:

; php options

pid = /var/run/hhvm/pid

; hhvm specific

hhvm.server.port = 9000
hhvm.server.type = fastcgi
hhvm.server.default_document = index.php
hhvm.log.level = Warning
hhvm.log.always_log_unhandled_exceptions = true
hhvm.log.runtime_error_reporting_level = 8191
hhvm.log.use_log_file = true
hhvm.log.file = /var/log/hhvm/error.log
hhvm.repo.central.path = /var/run/hhvm/hhvm.hhbc
hhvm.mysql.typed_results = false

これが私が見落としたばかげた明白なものではないことを本当に願っています...

Web ルートの nginx ロケーション ブロックは次のとおりです。

location ~ \.php$ {
    root /srv/foo
    fastcgi_keep_conn on;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME /srv/foo$fastcgi_script_name;
    include        fastcgi_params;
}
4

2 に答える 2

0

これは HHVM のバグのようです。そこのプロジェクトでこれを修正するためのチケットを追加しました。

于 2014-09-01T15:50:34.323 に答える