无法设置php_value'soap.wsdl_cache_dir'

时间:2014-02-06 01:35:23

标签: apache soap fastcgi php

我有运行Apache 2.2.4和PHP-FPM(FastCGI Process Manager)的VPS服务器(CentOS 6.5)。查看php-fpm error_log我发现每个spawn php-fpm子进程都出错:

WARNING: [pool www] child 24086 said into stderr: "ERROR: Unable to set php_value 'soap.wsdl_cache_dir'"

我找不到关于此警告谷歌搜索的任何信息。有人知道这意味着什么以及如何摆脱这种警告?

更新1:

apache的fastcgi.conf:

User apache                                                                                                                             
Group apache                                                                                                                            

LoadModule fastcgi_module modules/mod_fastcgi.so                                                                                        

<IfModule mod_fastcgi.c>                                                                                                                
    DirectoryIndex index.php index.html index.shtml index.cgi                                                                       
    AddHandler php5-fcgi .php                                                                                                       
    # For monitoring status with e.g. Munin                                                                                         
    <LocationMatch "/(ping|status)">                                                                                                
            SetHandler php5-fcgi-virt                                                                                               
            Action php5-fcgi-virt /php5-fcgi virtual                                                                                
    </LocationMatch>                                                                                                                

    Action php5-fcgi /php5-fcgi                                                                                                     
    Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi                                                                                     
    FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -socket /tmp/php5-fpm.sock -pass-header Authorization                          
</IfModule>

# global FastCgiConfig can be overridden by FastCgiServer options in vhost config                                                       
FastCgiConfig -idle-timeout 20 -maxClassProcesses 1

这是php的php-fpm.conf和pool配置:

pid = /var/run/php-fpm/php-fpm.pid
daemonize = yes

; Start a new pool named 'www'.                                                                                                         
[www]

listen = /tmp/php5-fpm.sock 
group = apache
pm = dynamic
pm.max_children = 8
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
pm.status_path = /status
ping.path = /ping
catch_workers_output = yes
php_admin_value[error_log] = /var/log/php-fpm/www-error.log                                                                             
php_admin_flag[log_errors] = on
php_value[session.save_handler] = files                                                                                                 
php_value[session.save_path]    = /var/lib/php/session                                                                                  
php_value[soap.wsdl_cache_dir]  = /var/lib/php/wsdlcache

其他所有内容都是默认设置。

更新2:

按照建议手动创建/var/lib/php/wsdlcache目录并将权限设置为770并将所有者设置为root:apache后,我希望我不会再次看到错误,但不幸的是重启php-fpm进程后错误再次存在,这变得非常奇怪。

P.S。也许这个问题更适合serverfault,但通常在stackoverflow上有更多的php和apache配置专家。

3 个答案:

答案 0 :(得分:15)

我讨厌如此微不足道的解决方案。最后,我自己找到了问题和解决方案。留在这里供其他有史以来的人参考。

FastCGI配置文件是在首次配置FastCGI时从互联网上获取的,因为之前我没有使用它。显示FastCGI配置的教程包含行php_value[soap.wsdl_cache_dir] = /var/lib/php/wsdlcache。我真的很感兴趣什么是SOAP,因为我没有在我在这台服务器上运行的网站上使用它,这种好奇心为我带来了解决方案。实际上我不需要SOAP,只是删除那行就可以解决我想的问题,但我决定把它留在那里,发现我只需要安装php-soap

yum install php-soap

对于RHEL / CentOS

重新启动php-fpm后,我没有收到重生fpm进程的错误。

答案 1 :(得分:2)

如果池配置中指定的目录/var/lib/php/wsdlcache不存在且PHP工作者也无法创建,则会收到该消息。请注意,PHP工作程序不是以root用户身份运行,而是以用户apache运行(这对于安全性非常好,应该保持这种状态!),因此很可能在/var/lib中没有写入权限。 Kepp还记得工作人员可以被chrooted(你的配置看起来不像你在做,但是可以) - 在这种情况下,目录当然是在chroot监狱里面。

创建该目录并修改访问权限,以便apache能够读取和写入它,一切都应该没问题。

答案 2 :(得分:0)

非常确定您不能将php_value用于(快速)CGI。如果使用比5.3.0更新且需要PHP_INI_PERDIR ini设置的PHP版本,您可能需要查看user.ini个文件。

  

自PHP 5.3.0起,PHP包括对a上的配置INI文件的支持   每个目录的基础。这些文件仅由CGI / FastCGI处理   SAPI。此功能废弃了PECL htscanner扩展。如果   你正在使用Apache,使用.htaccess文件可以达到同样的效果。

更新:没有看到它是pool www。正如Johannes H.所说:“你可以在php-fpm的池配置中使用php_value ......”。我的原始答案只适用于每个目录调整。请参阅下面的约翰内斯评论。