我已将 nginx 设置为在fast-cgi模式下使用HipHop VM 3.0版。一些事实:
www-data
身份运行。 fooers
/srv/foo
目录,其中包含一个index.php
个文件/srv/foo
的群组所有权是群组fooers
/srv/foo
权限设置为770
当我尝试查看此页面时,我找不到404,但hhvm或nginx日志中没有记录错误。但是,如果我更改了775
/srv/foo
上的hhvm
权限,则nginx
和$> ps -aux
完全按照预期提供网页。
此外,如果我将www-data用户的 默认 组更改为fooers组,则可以使用770权限。当它不是用户的默认组时,它似乎只会失败。
问题是什么?!?!?有谁知道为什么hhvm / nginx作为用户www-data运行,当权限为770时,无法访问对目录的组访问权限?
为了确认我的理智并确保我的群组和权限与我认为的一样,在启动服务后,我运行
www-data
我看到预期的hhvm进程和运行为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
的nginx进程:
$> groups www-data
www-data : www-data fooers
当我检查组时,我看到:
$> 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
当我检查目录时,我可以确认100%访问组和所有者:
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
用户:
/etc/hhvm/server.ini
如果我在不在fooers组中的用户尝试上述操作,则会失败。
这是我的; 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
:
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;
}
我真的希望这不是一件愚蠢而且显而易见的事情,我忽略了......
这是我的网络根目录的nginx位置块:
{{1}}
答案 0 :(得分:1)
请尝试更改您的配置文件,您的SourceRoot中没有。我的一些confs被启动参数覆盖。
在这里查看一下:/usr/bin/hhvm --config /etc/hhvm/server.hdf --user www-data --mode daemon -vServer.Type=fastcgi -vServer.Port=9010
PidFile = /var/run/hhvm/pid
Server {
Port = 82
SourceRoot = /var/www/main/
DefaultDocument = index.php
}
#AdminServer {
# Port = 9088
# ThreadCount = 1
# Password = xxx
#}
Eval {
Jit = true
JitWarmupRequests = 5
}
Log {
Level = Error
AlwaysLogUnhandledExceptions = true
RuntimeErrorReportingLevel = 8191
UseLogFile = true
UseSyslog = false
File = /var/log/hhvm/error.log
Access {
* {
File = /var/log/hhvm/access.log
Format = %h %l %u % t \"%r\" %>s %b
}
}
}
#Repo {
# Central {
# Path = /var/run/hhvm.hhbc.sq3
# }
#}
#include "/usr/share/hhvm/hdf/static.mime-types.hdf"
StaticFile {
FilesMatch {
* {
pattern = .*\.(dll|exe)
headers {
* = Content-Disposition: attachment
}
}
}
Extensions : StaticMimeTypes
}
MySQL {
TypedResults = false
}
答案 1 :(得分:0)
这似乎是HHVM的一个错误。我在那个项目中添加了一张修复此问题的票据。