我研究了一下php-fpm.conf文件,发现可以添加一些配置,过程如下,但并没有成功,希望鸟哥能关注一下,指点迷津。
怎样兼容不用namespace的应用?
原理:在每个fpm的每个pool里可以重新设置php.ini中的值。
操作:
新建两个项目,一个yaf.dev,计划用namespace,模拟新项目; 一个nyaf.dev,计划不用namespace,模拟老项目。
在/etc/php/7.0/fpm/pool.d中新建两个fpm配置,yaf.conf,最后一行加上php_admin_flag[yaf.use_namespace] = 1,设置listen = /run/php/php7.0-fpm.sock;nyaf.conf,只设置listen = /run/php/php-nyaf-7.0-fpm.sock。
在/etc/nginx/sites-enabled中新建两个配置。yaf.conf设置域名为yaf.dev,fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;;nyaf.conf设置域名为nyaf.dev,fastcgi_pass unix:/var/run/php/php-nyaf-7.0-fpm.sock;
重启FPM和Nginx
结果:
yaf.dev
报500错误,无法正确识别命名空间
在index.php首行写phpinfo();exit;,结果如下
yaf
yaf support enabled
Version 3.0.3-dev
Supports http://pecl.php.net/package/yaf
Directive Local Value Master Value
yaf.action_prefer Off Off
yaf.environ product product
yaf.forward_limit 5 5
yaf.library no value no value
yaf.lowcase_path Off Off
yaf.name_separator no value no value
yaf.name_suffix On On
yaf.st_compatible Off Off
yaf.use_namespace On On
yaf.use_spl_autoload Off Off
nyaf.dev
正常运行
在index.php首行写phpinfo();exit;,结果如下
yaf
yaf support enabled
Version 3.0.3-dev
Supports http://pecl.php.net/package/yaf
Directive Local Value Master Value
yaf.action_prefer Off Off
yaf.environ product product
yaf.forward_limit 5 5
yaf.library no value no value
yaf.lowcase_path Off Off
yaf.name_separator no value no value
yaf.name_suffix On On
yaf.st_compatible Off Off
yaf.use_namespace Off Off
yaf.use_spl_autoload Off Off
看这个配置还是正常的,但不知道为什么实际运行不对。
我觉得这还是个挺严重的问题,因为前端机就这些,想用命名空间还要兼容老的应用挺难的。