我有运行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.soDirectoryIndex index.php index.html index.shtml index.cgi AddHandler php5-fcgi .php # For monitoring status with e.g. Munin # global FastCgiConfig can be overridden by FastCgiServer options in vhost config FastCgiConfig -idle-timeout 20 -maxClassProcesses 1SetHandler php5-fcgi-virt Action php5-fcgi-virt /php5-fcgi virtual 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
这是PHP的php-fpm.conf和池配置:
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
进程后错误再次出现,这变得非常奇怪.
PS也许这个问题更适合于serverfault,但通常在stackoverflow上有更多的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进程的错误.