无法设置php_value'soap.wsdl_cache_dir'

问题描述:

我有运行Apache 2.2.4和PHP-FPM(FastCGI流程管理器)的VPS服务器(CentOS 6.5)。展望PHP-FPM的error_log我注意到误差与每一个菌种的php-fpm的子进程:无法设置php_value'soap.wsdl_cache_dir'

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

我找不到此警告谷歌上搜索任何信息。有谁知道这是什么意思,以及如何摆脱这个警告?

更新1:

fastcgi.conf的Apache:

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-fpm.conf和池配置PHP:

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,但是一般来说,在*上有更多的php和apache配置专家。

+0

请注意提供池配置的适当部分?此外,这不是真正的主题,而是在ServerFault或SuperUser上。 –

+1

@JohannesH。我已经用配置文件和我的研究结果更新了这个问题,但是我没有足够的专业知识和练习用php-fpm来自己理解和解决问题。 –

+0

hm。该配置文件对我来说看起来很好。我没有看到任何理由,因为在启动时出现错误,为什么更高的空闲超时会在这里改变任何内容。只有我能想到:目录/ var/lib/php/wsdlcache存在吗?如果FPM运行chroot,请确保它在*内存在(并且可访问)! –

我讨厌如此琐碎的解决方案。最后我自己找到了问题和解决方案。留在这里供具有一定历史前景的人参考。

第一次配置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过程的错误。

+0

请注意,虽然此软件包存在于Ubuntu上,但soap扩展只安装了默认的php5软件包(Ubuntu 12.04)。 –

很确定你不能使用php_value和(快速)CGI。如果使用的PHP版本比5.3.0更新且需要PHP_INI_PERDIR ini设置,则可能需要查看user.ini文件。

自PHP 5.3.0起,PHP支持基于每个目录的 配置INI文件。这些文件仅由CGI/FastCGI SAPI处理。该功能废除了PECL htscanner扩展。如果 您使用的是Apache,请使用.htaccess文件来达到同样的效果。

UPDATE:没有看到它是pool www。正如Johannes H.所观察到的:“您可以在php-fpm的池配置中使用php_value ...”。我原来的答案只适用于每个目录的调整。请参阅下面的Johannes评论。

+1

你**可以**使用php-fpm的pool-cofconfig中的php_value(不是在Apache中,但是这是正确的)。请参阅http://www.php.net/manual/en/install.fpm.configuration.php这使您可以为每个PHP进程池使用不同的设置(user.ini文件是每个目录,而不是每个池,php。 -ini是php-fpm内的所有池的全局) –

+0

谢谢Johannes。你的评论更多的是一个答案。考虑到你的修正案,在这里总体上还是一个有用的问答。 – ficuscr

+0

好吧,它不回答这个问题,所以不是;)但我同意,你的答案加上这个评论在这里是有用的,不应该被删除,即使它没有解决有问题的问题。 –

如果您的池配置中指定的目录/var/lib/php/wsdlcache不存在并且无法由PHP工作人员创建,则会显示该消息。请注意,PHP工作人员不是以超级用户身份运行,而是作为用户apache(这对安全性很好,应该保持这种方式!),因此很可能没有/var/lib的写入权限。 Kepp还记得,工作人员可以被chroot(你的配置看起来并不像你正在做的那样,但可以) - 在这种情况下,目录当然是在chroot*里面。

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

+0

我仍然希望我在权限部分做了错误的事情。是的,apache用户对'/ var/lib/php'文件夹没有写权限,但即使手动创建它,我也会得到相同的错误。请参阅我的更新2。谢谢 –

+0

嗯。权限看起来不错。 –

+0

是的,他们确实不幸:) –