访问网页时,PHP-FPM需要重新启动才能访问生成的文件

时间:2017-05-26 21:53:15

标签: php apache php-7

作为我工作的基于Web的项目的一部分,我们生成新的“站点”,通过将不同的参数传递给$_GET来访问它们。所有网站都位于/usr/local/sites。我们使用的用户(hwphpwww-data仍然是默认的apache用户)没有所有站点(用户或组),但是用户在组中,因此可以读取所有文件目录。

我有一个生成网站的python脚本,在运行它之后,有一半的时间我尝试访问它http://localhost/index.php?site=newsite我得到File not found: /var/local/sites/newsite/config/config.ini虽然运行PHP CLI但它可以找到文件和hwphp用户可以很好地阅读它,就在我通过PHP-FPM / Apache时失败了。

这是我的游泳池配置:

; Start a new pool named 'www'.
; the variable $pool can be used in any directive and will be replaced by the
; pool name ('www' here)
[submitty]

user = hwphp
group = hwphp

listen = /run/php/php7.0-fpm-submitty.sock

listen.owner = www-data
listen.group = www-data
;listen.mode = 0660

pm = dynamic

pm.max_children = 5

pm.start_servers = 2

pm.min_spare_servers = 1

pm.max_spare_servers = 3

和我的apache配置:

<VirtualHost 192.168.56.101:80>
    AddDefaultCharset utf-8
    ServerAdmin ADMIN@DOMAIN.HERE
    ServerName 192.168.56.101

    DocumentRoot /usr/local/submitty/site/public
    DirectoryIndex index.html index.php index.htm index.cgi

    SuexecUserGroup hwphp hwphp

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

        <FilesMatch ".+\.ph(p[345]?|t|tml)$">
            SetHandler php7-fcgi
        </FilesMatch>

        <Directory /usr/lib/cgi-bin>
            Require all granted
        </Directory>
    </IfModule>

    <Files .*>
        Order allow,deny
        Deny from all
    </Files>

    <Files *~>
        Order allow,deny
        Deny from all
    </Files>

    <Files #*>
        Order allow,deny
        Deny from all
    </Files>

    <Directory />
        AllowOverride None
    </Directory>

    <Directory /usr/local/submitty/site/public>
        Require all granted
        Order allow,deny
        Allow from all
    </Directory>

    LogLevel error
    ErrorLog ${APACHE_LOG_DIR}/submitty.log
    CustomLog ${APACHE_LOG_DIR}/submitty.log combined
</VirtualHost>

我一做:

service php7.0-fpm restart

它工作正常,找到了文件。不知道为什么这可能是没有意义的(为什么简单的重启是什么修复它)。

服务器是Ubuntu 16.04,使用PHP 7和Apache 2.4,所有东西都来自库存apt-get安装。

1 个答案:

答案 0 :(得分:0)

问题最终是PHP正在对读取的文件进行一些缓存,这在尝试打开文件时导致了问题。重新启动php-fpm刷新了缓存,并使一切正常。