配置php基础知识备忘

找出php的具体路径,用下面命令查找得知在etc目录下
chenwei@203-69-195-54:/usr/bin$ sudo find / -name php5
/var/lib/php5
/etc/apparmor.d/abstractions/php5
/etc/php5
/etc/cron.d/php5
/usr/bin/php5
/usr/share/doc/php5
/usr/share/php5
/usr/lib/php5
/usr/include/php5
进入到php5目录下,conf.d下是php所支持的模块的配置文件。如下
其软连接到mods-available/下
chenwei@203-69-195-54:/usr/bin$ cd /etc/php5/
chenwei@203-69-195-54:/etc/php5$ ll
total 20
drwxr-xr-x 2 root root 4096 Feb 17 16:48 apache2
drwxr-xr-x 2 root root 4096 Feb 17 16:48 cli
drwxr-xr-x 2 root root 4096 Feb 21 14:47 conf.d
drwxr-xr-x 3 root root 4096 Feb 21 14:51 fpm
drwxr-xr-x 2 root root 4096 Feb 17 16:54 mods-available
chenwei@203-69-195-54:/etc/php5$ cd conf.d/
chenwei@203-69-195-54:/etc/php5/conf.d$ ll
total 4
lrwxrwxrwx 1 root root 25 Feb 17 16:47 10-pdo.ini -> ../mods-available/pdo.ini
lrwxrwxrwx 1 root root 27 Feb 17 16:54 20-mysql.ini -> ../mods-available/mysql.ini
lrwxrwxrwx 1 root root 28 Feb 17 16:54 20-mysqli.ini -> ../mods-available/mysqli.ini
lrwxrwxrwx 1 root root 31 Feb 17 16:54 20-pdo_mysql.ini -> ../mods-available/pdo_mysql.ini
-rw-r–r– 1 root root 68 Feb 21 14:12 redis.ini
本地查看php安装了哪些模块,可以使用命令php -m  
chenwei@203-69-195-54:/etc/php5/conf.d$ php5 -m
[PHP Modules]
bcmath
bz2
calendar
Core
ctype
date
dba
dom
ereg
exif
fileinfo
filter
ftp
gettext
hash
iconv
json
libxml
mbstring
mhash
mysql
mysqli
openssl
pcntl
pcre
PDO
pdo_mysql
Phar
posix
readline
redis
Reflection
session
shmop
SimpleXML
soap
sockets
SPL
standard
sysvmsg
sysvsem
sysvshm
tokenizer
wddx
xml
xmlreader
xmlwriter
zip
zlib

通常,在刚开始安装php时,我们没有指定–with-mysql或者 –enable-sockets等扩展模块;而在后续开发过程中,陆续会用到一些相关的扩展模块,此时最简单的办法就是扩展编译相关模块,假如现在需要让php连接mysql,可按如下步骤进行:

1.进入php安装包下,如我的php解压后为php-5.2.9;php安装在php5文件夹内

cd ./php-5.2.9/ext/mysql

>/home/lvjm/php5/bin/phpize

>./configure –with-mysql=/home/lvjm/share/mysql  –with-php-config=/home/lvjm/php5/bin/php-config

>make

>make install

2. 编译,安装之后,修改php.ini文件

添加extension_dir=”/home/lvjm/php5/lib/php/extensions/no_debug_no_zts_20060631″;//此文件为编译生成的文件,存储在此路径中

extension=mysql.so

安装php(fastcgi模式)的时候,常常有这样一句命令:/usr/local/webserver/php/bin/phpize

一、phpize是干嘛的?

phpize是什么东西呢?php官方的说明:

http://php.net/manual/en/install.pecl.phpize.php

phpize是用来扩展php扩展模块的,通过phpize可以建立php的外挂模块

比如你想在原来编译好的php中加入memcached或者ImageMagick等扩展模块,可以使用phpize,通过以下几步工作。

二、如何使用phpize?

当php编译完成后,php的bin目录下会有phpize这个脚本文件。在编译你要添加的扩展模块之前,执行以下phpize就可以了;

比如现在想在php中加入memcache扩展模块:我们要做的只是如下几步

————————————————————————

tar zxvf memcache-2.2.5.tgz

cd memcache-2.2.5/

/usr/local/webserver/php/bin/phpize

./configure –with-php-config=/usr/local/webserver/php/bin/php-config

make

make install

————————————————————————

注意./configure 后面可以指定的是php-config文件的路径

这样编译就完成了,还需要做的是在php.ini文件中加入extension值

extension = “memcache.so”

Compiling shared PECL extensions with phpize

$ cd extname  进入到源码包中的扩展目录,这个扩展目录,通俗理解,如果要安装操作gd库,那么下载到这个库的源码后,解压源码会有个一个目录,进入这个目录。
$ phpize  运行phpize。路径不一定在这个目录下,但一般是在安装目录下(按照我理解,每个phpize与具体的版本有关,不可能通用),去寻找phpize运行。之后会生成了一个configure文件
$ ./configure     运行。    如果生成基于数据库的扩展,需要加上参数运行:1,–with-php-config。2,”–with-具体的数据库参数”.比如, –with-pgsql、–with-mysql
$ make
# make install 将会生成一个extname.so的扩展,被放到了PHP extensions directory

 
A successful install will have created extname.so and put it into the PHP extensions directory(生成一个.so文件,自动放到php的扩展目录下去,我觉得应该是phpize能够自动侦测到php扩展目录的位置).

You’ll need to and adjust php.ini and add an extension=extname.so line before you can use the extension.

If the system is missing the phpize command, and precompiled packages (like RPM’s) are used, be sure to also install the appropriate devel version of the PHP package as they often include the phpize command along with the appropriate header files to build PHP and its extensions.

Execute phpize –help to display additional usage information.

phpize的作用可以这样理解:侦测环境(phpize工具是在php安装目录下,基于这点phpize对应了当时的php环境,所以是要根据该php的配置情况生成对应的configure文件),建立一个configure文件。必须在一个目录下去运行phpize。那么phpize就知道你的的环境是哪个目录,并且configure文件建立在该目录下。

步骤总结:

一、cd /usr/src/php源码包目录/ext/扩展目录/

二、/usr/local/php5314/bin/phpize

三、./configure –with-php-config=/usr/local/php5314/bin/php-config

四、make && make install

五、剩下是配置php.ini

 

假如你的服务器上安装了多个版本php,那么需要告诉phpize要建立基于哪个版本的扩展。通过使用–with-php-config=指定你使用哪个php版本。

比如:–with-php-config=/usr/local/php524/bin/php-config

关于php-config文件:是在php编译生成后(安装好),放在安装目录下的一个文件。打开phpize文件内容会发现,里面定义好了php的安装目录等变量

prefix=’/usr/local/php’

phpize是编译安装时候生成好的,记录了当时安装的一些信息。并不能从其他地方拿个phpize来使用。

phpize是在php安装目录下的一个文件。比如我安装了两个php5.2 和php5.3那么使用phpize也要使用对应版本的phpize才行。此时使用–with-php-config有什么作用?

 

phpize工具一般在哪里?

当php编译完成后,php安装目录下的bin目录下会有phpize这个脚本文件。所以是去安装好的php安装目录去找。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>