PHP CLI下的配置处理
来源:互联网 发布:网络推广招聘信息 编辑:程序博客网 时间:2024/06/11 01:33
随着现在越来越多的需求 需要通过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
- PHP CLI下的配置处理
- php命令行(cli)下的开发
- php的cli简介
- 全面总结php在cli命令行模式下的使用
- PHP CLI模式下的多进程应用
- PHP CLI模式下的多进程应用
- PHP CLI模式下的多进程应用
- PHP CLI模式下的多进程应用
- PHP CLI模式下的多进程应用
- PHP CLI模式下的多进程应用
- PHP CLI模式下的多进程应用
- PHP CLI模式下的多进程应用分析
- php cli模式下的应用场景和注意点
- PHP CLI模式下的多进程应用
- PHP CLI模式下的多进程应用
- PHP CLI模式下的多进程应用
- php cli模式下获取参数的方法
- PHP CLI模式下的多进程应用
- mysql语句执行顺序
- 排序算法
- Java并发编程:volatile关键字解析
- The content of the adapter has changed but ListView did not receive a notification终极解决方法
- Java设计模式详解之一工厂方法模式
- PHP CLI下的配置处理
- ZOJ
- hdoj 2002
- AndroidManifest清单文件中已经声明Application的name,但getApplicationContext()获取的时候仍然空指针异常
- 深入理解HBase Indexer
- 不能引用另一方法中定义的内部类中非终态变量
- 正则表达式处理字符串
- CDN工作原理(CNAME)
- springboot项目打包部署时把静态资源打包到jar中、或修改静态资源根目录