PHP CLI下的配置处理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Lockheed_Hong/article/details/73331503

随着现在越来越多的需求 需要通过cli模式来实现,同时cli模式下的PHP配置信息是可以和fpm下的PHP完全不同的,配置的具体信息有时候不光和性能有关,甚至会出现一些疑难杂症,影响实现。

整个事情的起因是这样的:

在之前游族网络的工作中,广告系统需要对接facebook的marketing api,其中涉及到素材文件的上传。老外对代码的态度很认真,所有上传的文件类型都必须检测MIMEType来确认类型,而且创建为了性能是采用SWOOLE的多进程任务投递来实现的(调用一个fb api的响应时间在9~10s,而当时一个campaign下面的adset、ads、creative加在一起至少是几千起,多则几万),那就必须要通过cli模式来实现。运行过程中报了一个错误,之后通过xdebug追踪到了他们提供的SDK内是通过fileinfo来实现读取MIMEType的,使用fileinfo需要安装php_fileinfo扩展。之后怪事就来了,在内部的开发服务器上查看了php.ini的配置信息,和phpinfo()打印出来的扩展信息,都安装了这个扩展,但经过更精确的测试确定了问题就出在这里!

解决方案:

之后又因为开发服务器的安装配置权限都在运维童鞋那里,自己不能随便动,解决的过程一波三折,这里就直接说结果吧!之前的运维童鞋在安装PHP时由于是开发服务器没有太在意配置,于是导致了fpm下的配置参数和cli的参数不同!在cli下可以通过php -ini来查看所有配置,以及php -ini |grep XXX 来查看XXX关键词配置,之后运维童鞋根据cli的截图重新安装了整个环境(这里就不吐槽了),问题顺利解决!

结论:

fpm和cli下的配置参数可以同一个文件,也可以分开,也有可能安装时根本没定义。出现和配置有关的问题时,或是出错,或是优化配置,根据不同的环境定位到了正确的配置文件才能精确解决!

附录,安装时的配置参数:

具体参数含义可以用./configure –help来查看。

列表如下(部分参数未得到解释):

  • –prefix=/usr/local/php 指定 php 安装目录。
  • –with-config-file-path=/usr/local/php/etc 指定php.ini位置。
  • –with-mysql=/usr/local/mysql mysql安装目录,对mysql的支持。
  • –with-mysqli=/usr/local/mysql/bin/mysql_config 整合 apache,apxs功能是使用mod_so中的LoadModule指令,加载指定模块到 apache,要求 apache 要打开SO模块

选项指令 –with-iconv-dir 用于 PHP 编译时指定 iconv 在系统里的路径,否则会扫描默认路径。

  • –with-iconv-dir=/usr/local
  • –with-freetype-dir 打开对freetype字体库的支持
  • –with-jpeg-dir 打开对jpeg图片的支持
  • –with-png-dir 打开对png图片的支持
  • –with-zlib-dir 打开zlib库的支持,用于http压缩传输
  • –with-libxml-dir 打开libxml2库的支持
  • –disable-rpath 关闭额外的运行库文件
  • –enable-bcmath 打开图片大小调整,用到zabbix监控的时候用到了这个模块
  • –enable-shmop –enable-sysvsem 这样就使得你的PHP系统可以处理相关的IPC函数了。
  • –enable-inline-optimization 优化线程
  • –with-curl 打开curl浏览工具的支持
  • –with-curlwrappers 运用curl工具打开url流
  • –enable-mbregex
  • –enable-fpm 打上PHP-fpm 补丁后才有这个参数,CGI方式安装的启动程序
  • –enable-mbstring 多字节,字符串的支持
  • –with-mcrypt mcrypt算法扩展
  • –with-mhash mhash算法扩展
  • –with-gd 打开gd库的支持
  • –enable-gd-native-ttf 支持TrueType字符串函数库
  • –with-openssl openssl的支持,加密传输https时用到的
  • –enable-pcntl freeTDS需要用到的,可能是链接mssql 才用到
  • –enable-sockets 打开 sockets 支持
  • –with-xmlrpc 打开xml-rpc的c语言
  • –enable-zip 打开对zip的支持
  • –enable-ftp 打开ftp的支持

  • –with-bz2 打开对bz2文件的支持

  • –without-iconv 关闭iconv函数,字符集间的转换
  • –with-ttf 打开freetype1.*的支持,可以不加了
  • –with-xsl 打开XSLT 文件支持,扩展了libXML2库 ,需要libxslt软件
  • –with-gettext 打开gnu 的gettext 支持,编码库用到
  • –with-pear 打开pear命令的支持,PHP扩展用的
  • –enable-calendar 打开日历扩展功能
  • –enable-exif 图片的元数据支持
  • –enable-magic-quotes 魔术引用的支持
  • –disable-debug 关闭调试模式
  • –with-mime-magic=/usr/share/file/magic.mime 魔术头文件位置

CGI方式安装才用的参数:

  • –enable-fastCGI 支持fastcgi方式启动PHP
  • –enable-force-CGI-redirect 重定向方式启动PHP
  • –with-ncurses 支持ncurses 屏幕绘制以及基于文本终端的图形互动功能的动态库
  • –with-gmp 应该是支持一种规范
  • –enable-dbase 建立DBA 作为共享模块
  • –with-pcre-dir=/usr/local/bin/pcre-config perl的正则库案安装位置
  • –disable-dmalloc
  • –with-gdbm dba的gdbm支持
  • –enable-sigchild
  • –enable-sysvshm
  • –enable-zend-multibyte 支持zend的多字节
  • –enable-wddx
  • –enable-soap
展开阅读全文

没有更多推荐了,返回首页