标题:[运维用到]PHP的with-config-file-path 这个是用来指定目录,不是指定文件,PHP扩展的ini配置文件目录指定。 出处:向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除 时间:Fri, 18 Mar 2016 16:01:15 +0000 作者:jackxiang 地址:http://jackxiang.com/post/8577/ 内容: 背景:运行指定扩展配置文件extension.ini的扫描目录,这样结构化有利于运维进行模块添加,也是后来我运维时看到并实践的文章,参考文章,http://jackxiang.com/post/8613/。 参数 --prefix=/usr/local/php --with-config-file-scan-dir=/usr/local/php/etc/ 一定要设置正确,多个PHP版本须编译安装在不同路径!!!后面编译后无法修改此项: Set the path in which to look for php.ini [PREFIX/lib] --with-config-file-scan-dir=PATH php.ini的扩展目录,php -c /usr/local/php/etc/php-workerman.ini --ini=/usr/local/php/etc/php-workerman.d --help|grep scan 编译完php二进制后并没有提供参数指定。 作者:风吹我已散博客 链接:https://www.jianshu.com/p/f13402d5217e 来源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 php -i|grep "php.d" --color Scan this dir for additional .ini files => /usr/local/php/etc/php.d Additional .ini files parsed => /usr/local/php/etc/php.d/memcached.ini, /usr/local/php/etc/php.d/opcache.ini, /usr/local/php/etc/php.d/redis.ini $_SERVER['PWD'] => /usr/local/php/etc/php.d $_SERVER['OLD_PWD'] => /usr/local/php/etc/php.d PHP7在和PHP6一块时注意这个参数,下面就是编译时给指向了PHP5的目录了,出现运行报错,如下: /usr/local/php7/bin/php start.php PHP Warning: PHP Startup: Unable to load dynamic library 'redis.so' (tried: /usr/local/php/ext/redis.so (/usr/local/php/ext/redis.so: Undefined symbol "zval_used_for_init"), /usr/local/php/ext/redis.so.so (Cannot open "/usr/local/php/ext/redis.so.so")) in Unknown on line 0 Usage: php yourfile [mode] /usr/local/php7/bin/php -i|grep php.d Scan this dir for additional .ini files => /usr/local/php/etc/php.d Additional .ini files parsed => /usr/local/php/etc/php.d/redis.ini 还原编译时的命令,如下: /usr/local/php7/bin/php -i|grep configure 编译参数: --with-config-file-scan-dir=/usr/local/php7/etc/php.d 个性php.ini里面的参数: extension_dir => /usr/local/php/ext/ => /usr/local/php/ext/ #这一行没有写,所以就找到/usr/local/php/ext上去了,得写成: extension_dir => /usr/local/php7/ext/ => /usr/local/php7/ext/ /bin/sed -i 's#; extension_dir = \"\.\/\"#extension_dir = "/usr/local/php/ext/"#' %{buildroot}/%{_prefix}/etc/php.ini #sed -i "" 's#; extension_dir = \"\.\/\"#extension_dir = "/usr/local/php7/ext/"#' /usr/local/php7/etc/php.ini 737 extension_dir = "/usr/local/php7/ext/" 738 ; On windows: 739 ; extension_dir = "ext" ./configure --prefix=/usr/local/php7 --with-libdir=lib64 --with-config-file-path=/usr/local/php7/etc --with-config-file-scan-dir=/usr/local/php7/etc/php.d --with-iconv-dir=/usr/local --with-iconv=/usr/local/libiconv --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --with-curl --with-curlwrappers --with-mcrypt --with-gd --with-openssl --with-mhash --with-xmlrpc --without-pear --with-fpm-user=www --with-fpm-group=www --with-gettext --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --enable-xml --enable-bcmath --enable-shmop --enable-sysvsem --enable-fpm --enable-mbstring --enable-gd-native-ttf --enable-pcntl --enable-sockets --enable-zip --enable-soap --enable-opcache --enable-exif --enable-mbregex --enable-inline-optimization --enable-ftp --enable-fileinfo --disable-rpath --disable-ipv6 --disable-debug --with-readline /usr/local/php/etc/php.d/redis.ini php -m|grep redis redis 是因为有: --with-config-file-scan-dir=/usr/local/php/etc/php.d \ --with-config-file-scan-dir是搜索下面的ini文件和php.ini一起使用,好处就是扩展的那些extension="xx.so"可以放里面,每个扩展一个ini文件,可以方便的用自动化脚本或者部署脚本来搞,看起来模块化了 '—with-config-file-path=/data/software/php-5.6.15/lib/php.ini open("/data/software/php-5.6.15/bin/php-cli.ini", O_RDONLY) = -1 ENOENT (No such file or directory) open("/data/software/php-5.6.15/lib/php.ini/php-cli.ini", O_RDONLY) = -1 ENOTDIR (Not a directory) open("/data/software/php-5.6.15/bin/php.ini", O_RDONLY) = -1 ENOENT (No such file or directory) open("/data/software/php-5.6.15/lib/php.ini/php.ini", O_RDONLY) = -1 ENOTDIR (Not a directory) 求问这是bug么? --with-config-file-path=PATH --with-config-file-scan-dir=PATH —with-config-file-path 这个是用来指定目录,不是指定文件。 scan这个干嘛的?还能指定php去这个配置目录扫描? http://php.net/manual/zh/function.php-ini-scanned-files.php php.conf.d/*.ini 应该一个是cli,一个是运行服务的吧? 不是吧 应该是搜索这个目录下的 *.ini 文件吧 scan是扩展配置文件目录 cli sapi默认都是编译时指定的位置,也可以手动指定 嗯,--with-config-file-scan-dir是搜索下面的ini文件和php.ini一起使用,好处就是扩展的那些extension="xx.so"可以放里面,每个扩展一个ini文件,可以方便的用自动化脚本或者部署脚本来搞,看起来模块化了 关于opcache想编译成静态所谓提高效率: PHP 5.5.0 及后续版本, OPcache 只能编译为共享扩展。 ————————————————— 理论上性能好点儿,高并发可能瓶颈不在这儿,所以不明显。 静态这个是迷信 嘿嘿,嗯 所以我说这是我自己的迷信 嘿嘿。 Generated by Jackxiang's Bo-blog 2.1.1 Release