无法设置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配置专家。
我讨厌如此琐碎的解决方案。最后我自己找到了问题和解决方案。留在这里供具有一定历史前景的人参考。
第一次配置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过程的错误。
请注意,虽然此软件包存在于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评论。
你**可以**使用php-fpm的pool-cofconfig中的php_value(不是在Apache中,但是这是正确的)。请参阅http://www.php.net/manual/en/install.fpm.configuration.php这使您可以为每个PHP进程池使用不同的设置(user.ini文件是每个目录,而不是每个池,php。 -ini是php-fpm内的所有池的全局) –
谢谢Johannes。你的评论更多的是一个答案。考虑到你的修正案,在这里总体上还是一个有用的问答。 – ficuscr
好吧,它不回答这个问题,所以不是;)但我同意,你的答案加上这个评论在这里是有用的,不应该被删除,即使它没有解决有问题的问题。 –
如果您的池配置中指定的目录/var/lib/php/wsdlcache
不存在并且无法由PHP工作人员创建,则会显示该消息。请注意,PHP工作人员不是以超级用户身份运行,而是作为用户apache
(这对安全性很好,应该保持这种方式!),因此很可能没有/var/lib
的写入权限。 Kepp还记得,工作人员可以被chroot(你的配置看起来并不像你正在做的那样,但可以) - 在这种情况下,目录当然是在chroot*里面。
创建该目录并修改访问权限,以便apache
能够读取和写入,并且一切都应该没问题。
我仍然希望我在权限部分做了错误的事情。是的,apache用户对'/ var/lib/php'文件夹没有写权限,但即使手动创建它,我也会得到相同的错误。请参阅我的更新2。谢谢 –
嗯。权限看起来不错。 –
是的,他们确实不幸:) –
请注意提供池配置的适当部分?此外,这不是真正的主题,而是在ServerFault或SuperUser上。 –
@JohannesH。我已经用配置文件和我的研究结果更新了这个问题,但是我没有足够的专业知识和练习用php-fpm来自己理解和解决问题。 –
hm。该配置文件对我来说看起来很好。我没有看到任何理由,因为在启动时出现错误,为什么更高的空闲超时会在这里改变任何内容。只有我能想到:目录/ var/lib/php/wsdlcache存在吗?如果FPM运行chroot,请确保它在*内存在(并且可访问)! –