您的位置:

php编译安装fileinfo,php编译安装模块

本文目录一览:

如何在linux安装php开发环境

我一般会选用源码安装 php,安装 php 的过程指定要安装的扩展,但是避免不了缺少某个扩展未安装导致程序运行报错的问题。以 fileinfo 为例,介绍一下怎么添加 php 扩展。

1. 准备

通常遇到报错:xxx function undefined,而这个函数是系统函数的话,那一定是你缺少某个扩展。添加扩展也非常简单。首选要确认当前的 php 是哪个版本,不同版本的 php 扩展会有些许出入。然后找到 Php 源码目录,也就是从网上下载下来并且解压的 php 文件包。添加扩展的时候需要在源码包里面去执行命令。

2. 安装 fileinfo 扩展

1. 确认 php 版本

php -v

# PHP 7.4.4 (cli)

2. 找到 php 可执行文件的位置

whereis php

# php: /usr/local/php /usr/local/php/bin/php

可以看出 php 执行文件在 /usr/local/php/bin 目录里面

那么尝试执行 phpize,保证这个文件存在,phpize 命令在添加扩展的时候需要用到

/usr/local/php/bin/phpize -v

# Configuring for:

# PHP Api Version: 20190902

# Zend Module Api No: 20190902

# Zend Extension Api No: 320190902

3.进入php源码目录

我的习惯是网络下载的软件会放在 /usr/local/src 下面,

cd /usr/local/src/php-7.4.4

cd /etc

cd fileinfo

扩展都在源码目录的 etc 下面,里面有 curl,gd,ftp 等等扩展目录,我要安装 fileinfo,所以到 fileinfo 目录里面

4.开始安装

确定目录下面有 config.m4 文件,如果没有,应该会有 config0.m4 文件,把 config0.m4 复制一份为 config.m4,如果没有这个文件,会报错:can not found config.m4

/usr/local/php/bin/phpize

./configure

make make install

如果这几行命令运行下来都没有报错,那么说明扩展文件已经生成,并且已经自动移入相应位置。接下来就是修改 php.ini,追加 extension=fileinfo.so 到 php.ini 中。

5.修改php.ini,加载扩展文件

查看 php.ini 的位置

php -i | grep php.ini

#Configuration File (php.ini) Path = /usr/local/php/etc

#Loaded Configuration File = /usr/local/php/etc/php.ini

可以看到 php.ini 的位置: /usr/local/php/etc/php.ini

vim /usr/local/php/etc/php.ini

#添加extension=fileinfo.so,保存

php -m | grep fileinfo

#fileinfo

看到输出 fileinfo,至此,fileinfo 扩展安装完毕!另外可以使用 pecl 命令安装,更方便快捷!

如何在openSUSE42.1下编译安装PHP7

首先推荐一篇文章

PHP

7

Release

Date

Arrived:

Will

Developers

Adopt

PHP

7?

-

PHP

Classes

blog

里面说到是否会去使用PHP7,就个人而言,我是毫不犹豫地使用的,但是生产环境就不是我说了算,所以只能自己在自己的开发环境里更新PHP的版本。那么,你呢?

笔者使用的是Linux的openSUSE42.1发行版,Yast里面还没有PHP7的安装包,于是乎只能自己手动编译安装了。作为一个PHP开发者,我是非常希望能够学会编译安装PHP7的,之前试过几次,但是每次安装都要上网找各种资料,于是乎,这次安装成功后就想把自己的安装过程以及遇到的问题记录下来,方便以后查阅和分享给需要的人。

下载源码并解压

进入正题,要编译安装PHP7,首先当然要下载PHP7的源码。你可以到

github

上clone,也可以到

PHP官网

下载。下载后解压到

/usr/local/src

目录,并将目录重命名为php7。进入目录。

配置编译参数

生成配置文件

./buildconf

配置

./configure

\

--prefix=/usr/local/php7

\

--exec-prefix=/usr/local/php7

\

--bindir=/usr/local/php7/bin

\

--sbindir=/usr/local/php7/sbin

\

--includedir=/usr/local/php7/include

\

--libdir=/usr/local/php7/lib/php

\

--mandir=/usr/local/php7/php/man

\

--with-config-file-path=/usr/local/php7/etc

\

--with-mysql-sock=/var/run/mysql/mysql.sock

\

--with-mcrypt=/usr/include

\

--with-mhash

\

--with-openssl

\

--with-mysqli=shared,mysqlnd

\

--with-pdo-mysql=shared,mysqlnd

\

--with-gd

\

--with-iconv

\

--with-zlib

\

--enable-zip

\

--enable-inline-optimization

\

--disable-debug

\

--disable-rpath

\

--enable-shared

\

--enable-xml

\

--enable-bcmath

\

--enable-shmop

\

--enable-sysvsem

\

--enable-mbregex

\

--enable-mbstring

\

--enable-ftp

\

--enable-gd-native-ttf

\

--enable-pcntl

\

--enable-sockets

\

--with-xmlrpc

\

--enable-soap

\

--without-pear

\

--with-gettext

\

--enable-session

\

--with-curl

\

--with-jpeg-dir

\

--with-freetype-dir

\

--enable-opcache

\

--enable-fpm

\

--disable-cgi

\

--with-fpm-user=nginx

\

--with-fpm-group=nginx

\

--without-gdbm

\

--disable-fileinfo

参数说明

prefix

PHP7安装的根目录

with-config-file-path

PHP7的配置文件目录

执行完上面的配置命令后的结果如下图所示:

执行上面命令的过程中会遇到一些依赖缺少的提示,下面列出我遇到的依赖问题:

错误:

configure:

error:

xml2-config

not

found.

Please

check

your

libxml2

installation.

解决:

zypper

install

libxml2-devel

错误:

configure:

WARNING:

unrecognized

options:

--with-mysql

解决:

取消这个选项,这个选项是不存在的

错误:

configure:

error:

jpeglib.h

not

found.

解决:

zypper

install

libjpeg-devel

错误:

configure:

error:

mcrypt.h

not

found.

Please

reinstall

libmcrypt.

解决:

zypper

install

libmcrypt-devel

错误:

checking

for

recode

support...

yes

configure:

error:

Can

not

find

recode.h

anywhere

under

/usr

/usr/local

/usr

/opt.

解决:

zypper

install

librecode-devel

总的来说,在配置的时候遇到没有的就打开Yast搜一下,如果有的话就安装,然后重新编译看还需要那些,如果在Yast找不到,那就上网找一下Google。

编译和安装PHP7

make

make

install

其中,make之后可以选择make

test。只是一个可选步骤,不执行不知道有什么问题,不过笔者暂时还没遇到。

查看安装成功后的PHP7目录

编译安装成功后,查看PHP7的安装目录`ls

/usr/local/php7`:

设置PHP7的配置文件

cp

/usr/local/src/php7/php.ini-production

/usr/local/php7/etc/php.ini

cp

/usr/local/src/sapi/fpm/init.d.php-fpm

/etc/init.d/php-fpm

cp

/usr/local/php7/etc/php-fpm.conf.default

/usr/local/php7/etc/php-fpm.conf

cp

/usr/local/php7/etc/php-fpm.d/

/usr/local/php7/etc/php-fpm.d/

设置环境变量

在/etc/profile

文件的最后一行加上

export

PATH=/usr/local/php7/bin:/usr/local/php7/sbin:$PATH

然后执行

source

/etc/profile

设置PHP日志目录和php-fpm进程文件(php-fpm.sock)目录

mkdir

-p

/var/log/php-fpm/

mkdir

-p

/var/run/php-fpm

cd

/var/run/

chown

-R

nginx:nginx

php-fpm

将PHP设置为开机启动

chmod

+x

/etc/init.d/php-fpm

chkconfig

php-fpm

on

可以用chkconfig命令查看开机启动服务列表。

启动PHP服务

service

php-fpm

start

通过ps

aux

|

grep

'php'查看PHP是否启动成功

至此,PHP7就安装成功了,你也开始使用PHP7吧!

编译PHP提示出错找不到libc-client.无法编译PHP怎么办

I. 安装devel库

yum install pam-devel libc-client libc-client-devel -y

如果使用了yum安装了libc-client,那么在以后编译参数--with-imap=/usr/local/php-imap中的路径应该删除,即--with-imap。

如果这样还不能解决,那么就需要手动编译imap2007f了!

II. 手动编译imap2007f

脚本取自 forum.directadmin.com/showthread.php?t=45434

在/usr/src目录下运行以下脚本,将会在/usr/local/php-imap目录下生成imap需要的库

#!/bin/sh

# Script for PHP-IMAP installation. 0.1b

# Written by Martynas Bendorius (smtalk)

CWD=`pwd`

OS=`uname`

#Is it a 64-bit OS?

B64=0

B64COUNT=`uname -m | grep -c 64`

if [ "$B64COUNT" -eq 1 ]; then

B64=1

LD_LIBRARY_PATH=/lib64:/usr/lib64:/usr/local/lib64:/lib:/usr/lib:/usr/local/lib

export LD_LIBRARY_PATH

fi

if [ ! -e /usr/include/krb5.h ] [ -e /etc/redhat-release ]; then

echo "Installing krb5-devel"

yum -y install krb5-devel

fi

VERSION=2007f

PROTOCOL=ftp

URL="${PROTOCOL}://{VERSION}.tar.Z"

FILENAME=imap-${VERSION}

TARBALL=${FILENAME}.tar.Z

echo "Downloading ${TARBALL}..."

wget -O ${TARBALL} ${URL}

tar xzf ${TARBALL}

cd ${FILENAME}

echo "Installing ${FILENAME}..."

if [ ${OS} = "FreeBSD" ]; then

if [ ${B64} -eq 0 ]; then

make bsf

else

make bsf EXTRACFLAGS=-fPIC

fi

else

perl -pi -e 's#SSLDIR=/usr/local/ssl#SSLDIR=/etc/pki/tls#' src/osdep/unix/Makefile

perl -pi -e 's#SSLINCLUDE=\$\(SSLDIR\)/include#SSLINCLUDE=/usr/include/openssl#' src/osdep/unix/Makefile

perl -pi -e 's#SSLLIB=\$\(SSLDIR\)/lib#SSLLIB=/usr/lib/openssl#' src/osdep/unix/Makefile

if [ ${B64} -eq 0 ]; then

make slx

else

make slx EXTRACFLAGS=-fPIC

fi

fi

echo "Copying files to /usr/local/php-imap"

mkdir -p /usr/local/php-imap/include

mkdir -p /usr/local/php-imap/lib

chmod -R 077 /usr/local/php-imap

cp -f c-client/*.h /usr/local/php-imap/include/

cp -f c-client/*.c /usr/local/php-imap/lib/

cp -f c-client/c-client.a /usr/local/php-imap/lib/libc-client.a

cd ..

rm -rf ${FILENAME}

if [ -d /usr/lib/x86_64-linux-gnu ] [ ! -d /usr/kerberos/lib ]; then

mkdir -p /usr/kerberos

ln -s /usr/lib/x86_64-linux-gnu /usr/kerberos/lib

fi

exit 0;

III. 开始编译

下面是编译PHP的参数,如果出现问题,请参考编译PHP5.6 和 PHP编译错误的解决办法。

./configure --prefix=/usr/local/php --with-pdo-pgsql --with-zlib-dir --with-freetype-dir --enable-mbstring --with-libxml-dir=/usr --enable-soap --enable-calendar --with-curl --with-mcrypt --with-zlib --with-gd --with-pgsql --disable-rpath --enable-inline-optimization --with-bz2 --with-zlib --enable-sockets --enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex --enable-exif --enable-bcmath --with-mhash --enable-zip --with-pcre-regex --with-mysql --with-pdo-mysql --with-mysqli --with-jpeg-dir=/usr --with-png-dir=/usr --enable-gd-native-ttf --with-openssl --enable-ftp --with-imap=/usr/local/php-imap --with-imap-ssl --with-kerberos --with-gettext --with-xmlrpc --with-xsl --enable-opcache --enable-fpm --with-fpm-user=www --with-fpm-group=www --disable-fileinfo

IV. 其他问题

在本次编译中,老高又遇到了几个怪事

set --enable-opcache=no

configure: error: Don't know how to define struct flock on this system, set --enable-opcache=no

这个问题还是库文件的链接问题

解决:

echo /usr/local/lib /etc/ld.so.conf.d/local.conf

ldconfig -v

让编译的PHP支持memcache

php5.5怎样启用php_fileinfo支持?

fileinfo 是php的一个扩展,你需要在安装时候查看是否有这个扩展包,如果有,那就在php.ini写 extension=php_fileinfo.dll  就可以了,如果有这一行,就删除前面的分号。

PHP 是一种在服务器端执行,嵌入到HTML文档的脚本语言,早期的风格类似于C语言与Perl语言,被广泛的运用于网络开发中。PHP6是下一代PHP版本,主要特性为支持Unicode标准。2015年6月11日,PHP官网发布消息,正式公开发布PHP7第一版的alpha版本。

《PHP 5.5从零开始学(视频教学版)》循序渐进地介绍了PHP 5.5开发动态网站的主要知识和技能,提供了大量的PHPPHP应用实例供读者买践。每一章节都清晰讲述了代码作用及其编写思路,使读者能在最短时间内迅速掌握PHP的应用开发技能。全书共22章,分别介绍了PHP 5.5的基本概念、PHP服务器环境配置、PHP的基本语法、PHP的语言结构、字符串和正则表达式、数组、时间和日期、面向对象、错误处理和异常处理、PHP与Web页面交互、文件与目录操作、图形图像处理、Cookie与会话管理、MySQL数据库基础、PHP操作MySQL数据库、PDO数据库抽象类库、PHP与JavaScript综合应用、PHP与XML技术的综合应用、PHP与Ajax的综合应用、Smarty模版、Zend framework框架等,最后通过一个PHP+MySQL数据库的综合案例,使读者进一步巩固所学的知识,提高综合实战能力。