猿问

php在虚拟机上编译,生成扩展文件全部是.dll不是.so

本机:win1o
虚拟机:Vmware2017--centos6.5
编译PHP:
安装依赖包:yum install -y libxml2-devel libicu-devel libpng-devel libjpeg-turbo-devel libmcrypt-devel libcurl-devel bzip2-devel openssl-devel gmp-devel freetype-devel
./configure \
--prefix=/usr/local/php \
--enable-bcmath \
--enable-exif \
--enable-fpm \
--enable-mbstring \
--enable-soap \
--enable-sockets \
--enable-zip \
--with-bz2 \
--with-curl \
--with-freetype-dir \
--with-gd \
--with-gettext \
--with-gmp \
--with-jpeg-dir=/usr/lib64 \
--enable-mysqlnd \
--with-mysql=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-openssl \
--with-pdo-mysql=/usr/local/mysql \
--with-png-dir=/usr/lib64 \
--with-readline \
--with-tsrm-pthreads \
--with-xmlrpc \
--with-zlib

我编译完后:打开php.int如图


为什么全部是 .dll文件?我打开phpinfo()提示GD开启,但是我去掉配置文件中的 ‘;’
就报错,说找不到相应的php_gd2.dll文件,
尝试解决:

   1.不改,去掉“;”提示没有文件
   2.将.dll文件改成.so文件,报错,
   3.重新再源码包的位置追加GD扩展,指定到相关目录下提示:也是报错,说格式不对什么的。
   4.重新编译整个PHP,换了版本也不行,照样是生成.dll扩展文件

下面是编译后扩展路径下的文件:

https://img4.mukewang.com/5c8f68b50001359208000120.jpg

https://img1.mukewang.com/5c8f68b70001722908000168.jpg

正确的编译后,php.int应该是

https://img1.mukewang.com/5c8f68b90001a9c807890468.jpg

这样编译后后果是:
1.phpinfo()中提示扩展都能用但是,去掉;所有的扩展都不能用,

解决:1.去源码目录拷贝,没有发现有.dll文件
     2.重新编译扩展,放到扩展目录下,提示.so文件不能用
     3.去windos下拷贝对应的.dll提示报错不能用
     4.改php.ini中的.dll为.so或者去掉后缀都提示错误

2.为什么我在虚拟机下编译的扩展是.dll?而不是.so?
3.在源码扩展目录下gd:也没有发现有gd2_.dll文件
下面有大哥回复说:

1.我步骤不对,其实我整个流程没有错,
2.说;extension=php_bz2.dll是WINDOS对应的扩展,跟linux无关,但是我在整个文件中搜索都没有找到和所以扩展相关的地方了,比如搜索;extension=或者是搜扩展关键词,都找不到extension=*gd2.so或者extension=;都没有!!!
是不是在

[gd]
; Tell the jpeg decode to ignore warnings and try to create
; a gd image. The warning will then be displayed as notices
; disabled by default
; http://php.net/gd.jpeg-ignore...
;gd.jpeg_ignore_warning = 0
加上
extension=gd2
extension=gd2.so
我尝试了都报错

紫衣仙女
浏览 524回答 2
2回答

温温酱

参见 Centos 7 Nginx + PHP 安装步骤 我用的也是Yii2,所以不存在兼容问题。
随时随地看视频慕课网APP
我要回答