![Webmin / Virtualmin 将 php 作为 www-data 运行,无法查看 .htaccess 和写入](https://linux22.com/image/581031/Webmin%20%2F%20Virtualmin%20%E5%B0%86%20php%20%E4%BD%9C%E4%B8%BA%20www-data%20%E8%BF%90%E8%A1%8C%EF%BC%8C%E6%97%A0%E6%B3%95%E6%9F%A5%E7%9C%8B%20.htaccess%20%E5%92%8C%E5%86%99%E5%85%A5.png)
我已在 virtualmin 论坛上询问过这个问题,但没有得到任何帮助。
最近发生了“一些事情”,似乎 apache 服务变得有点奇怪。
它的作用:它将所有 Apache 流量作为 www-data 运行,并且有时将 php5-cgi 进程生成为 www-data,这是一个问题,因为所有域用户都拥有自己的目录,而默认权限不允许 www-data 写入这些文件夹(文件上传已失效)或读取 .htaccess(wordpress 中的永久链接已损坏)。
我已经连续在 Google 上搜索了这个问题大约一个星期,尝试了几乎所有能找到的方法,但一无所获。
我认为唯一可能导致这一切的原因是这个页面:http://-i.imgur.com/NYW3x.png(被垃圾邮件过滤器关闭)所以我想如果我将它设置为“默认”,它可能会神奇地再次开始工作,但它所做的只是“崩溃”apache(所有网站超时)。
我认为它与“mpm”模块或其他东西有关,但我在设置中找不到任何相关内容可以修改以使其正常工作。
有人能给我指明正确的方向吗?
系统信息:
Webmin version 1.580
Kernel and CPU Linux 2.6.35.4-rscloud on x86_64
Virtualmin version 3.90.gpl GPL
Ubuntu 10.04 LTS (Lucid)
顶部的几张截图
答案1
在 Debian 服务器上更新到 php 5.4+ 时我遇到了同样的问题。
默认情况下,php5.4+ 发行版将SetHandler
在其 apache conf 文件中包括该指令。Virtualmin 为每个站点添加自己的SetHandler
配置指令。因此,为了使其正常工作,您需要从默认 php conf 文件中禁用该指令。
打开您的php.conf
或php5.conf
apache conf 文件。
/etc/apache2/mods-available/php5.conf
/etc/apache2/mods-available/php_cgi5.conf
用 .注释掉SetHandler
行#
,或者整个 FilesMatch 节点。
#<FilesMatch ".+\.ph(p[345]?|t|tml)$">
# SetHandler application/x-httpd-php
#</FilesMatch>
重新启动 apache。
答案2
重新检查配置将检测您的系统上的 suexec 是否以某种方式配置错误,但由于它有时有效,这意味着您在 Apache 配置中有一些配置覆盖了 Virtualmin 的设置。
某些域或目录未调用 suexec 是导致问题的根源。这表明存在几种可能性...mod_php 不支持 suexec,因此您需要使用 FCGId 模式或 CGI 模式才能使 suexec 正常工作。
我的假设是,您的 httpd 配置中有一些自定义 PHP 处理程序,导致某些应用程序使用 mod_php 而不是 CGI 或 FCGId。Virtualmin 仅通过域级特异性来控制这一点,因此如果对于给定域来说确实是“有时”,则必须是目录级或更具体。
因此,请检查配置文件中是否存在导致使用 mod_php 而不是 FCGId 或 CGI 的自定义处理程序。此外,据我所知,MPM 与 mod_php 不兼容。因此,如果您曾经使用过 MPM,您甚至应该加载 mod_php,因为您无法安全地使用它。