php编译安装,php编译

php编译安装,php编译

最近项目需求,域名备案主体变更,要去香港搭个服务器中转,于是就很蛋疼的开始服务器搭建之路。

在php配置时候出现一个问题,代码提示

Fatal error: Uncaught exception 'PDOException' with message 'could not find driver' in 

我以为是pdo没有装,然后就开始装pdo,编译后一直报错,然后看论坛一群人抄啊抄的什么都不知道,还抄错的,让人恼火。然后stackoverflow上有人说,pdo是php自带的,不会没装啊。

我看了下自己编译的语句

--disable-pdo

f***!怪自己copy没看清,不过除了这个坑以外,这个文章安装nginx、php都靠谱(

然后删了重新编译一遍,–enable-pdo,发现还是不行。

然后就看到了某个帖子(看了太多,但是这个帖子是国外的),提示去php解压缩目录的ext下有mysql的文件(不需要去pecl下载对应的扩展包),进去以后

phpize
./configure
make && make install

然后去php.ini里面加一句

extension=pdo_mysql.so

搞定!

顺便php.ini位置可以在

echo phpinfo();exit;

中看到,如果Loaded Configuration
File参数是null,就去php解压缩目录里面找到php.ini-production
复制到Configuration File (php.ini)
Path这个参数显示的路径上去,然后就会显示啦

最近项目需求,域名备案主体变更,要去香港搭个服务器中转,于是就很蛋疼的开始服务器搭建之路。
在php配置时候…

编译安装 php 5.4.11,php5.4.11

第一步 先下载 tzr.gz 的php源码包
然后 tar zxvf  php-5.4.11.tar.gz
然后 cd php-5.4.11

然后复制如下编译代码 
./configure \
–prefix=/usr/local/php \
–enable-zip \
–with-xsl \
–enable-zend-multibyte \
–enable-sockets \
–enable-soap \
–with-pdo-mysql=mysqlnd \
–with-mysql=mysqlnd \
–enable-pcntl \
–with-mcrypt \
–enable-fpm \
–enable-shmop \
–with-readline \
–enable-mbstring \
–with-mhash \
–enable-gd-native-ttf \
–with-freetype-dir \
--with-t1lib=/usr/local/share/t1lib \
–with-png-dir \
–with-jpeg-dir \
–with-gd \
–with-openssl-dir \
–enable-ftp \
–enable-exif \
–enable-dba \
–with-bz2 \
–enable-bcmath \
–with-curl

!!!

yum install -y gcc gcc-c++  make zlib zlib-devel pcre pcre-devel 
libjpeg libjpeg-devel \
    libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel
\
    glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses
ncurses-devel curl curl-devel\
    e2fsprogs e2fsprogs-devel krb5 krb5-devel openssl openssl-devel \
    openldap openldap-devel nss_ldap openldap-clients openldap-servers
\
    php-mysqlnd libmcrypt-devel  libtidy libtidy-devel recode
recode-devel libxpm-devel  curl-devel

最近项目需求,域名备案主体变更,要去香港搭个服务器中转,于是就很蛋疼的开始服务器搭建之路。

想要编译安装PHP首先需要安装对应的编译工具。
Ubuntu上使用如下命令安装编译工具和依赖包:

编译PHP5缺t1lib包解决方案 遇到这个报错: configure: error: Your t1lib distribution is not installed correctly. Please reinstall it. 以下是解决步骤: 1. 下载t1lib-5.1.2.tar.gz 2. 解决依赖关系:apt-get build-dep t1lib 3. 安装:./configure & make without_doc & make install 4. 编译php5 时在./configure后加上 --with-t1lib=/usr/local/share/t1lib。再次编译就能通过了。  解决地址:

如果提示 configure: error: Please reinstall readline – I cannot find
readline.h 错误!

安装 sudo apt-get install  libreadline-dev

然后再编译一下 就没错误了!

‘./configure’ ‘–prefix=/usr/local/php’ ‘–with-config-file-path=/etc’
‘–with-mysql=/usr/local/mysql’
‘–with-mysqli=/usr/local/mysql/bin/mysql_config’
‘–with-iconv-dir=/usr/local’ ‘–with-freetype-dir’ ‘–with-jpeg-dir’
‘–with-png-dir’ ‘–with-zlib’ ‘–with-libxml-dir=/usr’ ‘–enable-xml’
‘–disable-rpath’ ‘–enable-safe-mode’ ‘–enable-bcmath’ ‘–enable-shmop’
‘–enable-sysvsem’ ‘–enable-inline-optimization’ ‘–with-curl’
‘–with-curlwrappers’ ‘–enable-mbregex’ ‘–enable-fpm’ ‘–enable-mbstring’
‘–with-mcrypt’ ‘–with-gd’ ‘–enable-gd-native-ttf’ ‘–with-openssl’
‘–with-mhash’ ‘–enable-pcntl’ ‘–enable-sockets’ ‘–with-xmlrpc’
‘–enable-zip’ ‘–enable-soap’
出现得错误如下:

报错:configure: error: png.h not found.
解决办法:
apt-get -y install libpng12-dev

错误一:
configure: error: xml2-config not found. Please check your libxml2
installation.
而我已经安装过了libxml2,但是还是有这个提示:
解决办法:
# sudo apt-get install libxml2-dev

错误二:
configure: error: Please reinstall the BZip2 distribution
而我也已经安装了bzip2,网上找到得解决方案都是需要安装bzip2-dev,可是11.10里面没有这个库。
解决办法:在网上找到bzip2-1.0.5.tar.gz,解压,直接make ,sudo make
install.(我使用的该源来自于)

错误三:
configure: error: Please reinstall the libcurl distribution -easy.h
should be in /include/curl/
解决办法:
# sudo apt-get install libcurl4-gnutls-dev

错误四:
configure: error: jpeglib.h not found.
解决办法:
# sudo apt-get install libjpeg-dev

错误五:
configure: error: png.h not found.
解决办法:
# sudo apt-get install libpng-dev

错误六:
configure: error: libXpm.(a|so) not found.
解决办法:
# sudo apt-get install libxpm-dev

错误七:
configure: error: freetype.h not found.
解决办法:
# sudo apt-get install libfreetype6-dev

错误八:
configure: error: Your t1lib distribution is not installed correctly.
Please reinstall it.
解决办法:
# sudo apt-get install libt1-dev

错误九:
configure: error: mcrypt.h not found. Please reinstall libmcrypt.
解决办法:
# sudo apt-get install libmcrypt-dev

错误十:
configure: error: Cannot find MySQL header files under yes.
Note that the MySQL client library is not bundled anymore!
解决办法:
# sudo apt-get install libmysql++-dev

错误十一:
configure: error: xslt-config not found. Please reinstall the libxslt
>= 1.1.0 distribution
解决办法:
# sudo apt-get install libxslt1-dev
可见PHP源码安装之前需要先安装这些依赖,详细可见
如上错误都解决之后,再次./config….没有错误之后,
# make
# sudo make install

将编译安装的PHP输入到环境变量中
编译后 将其PHP路径 输入到环境变量中,要不然系统执行PHP的文件时
不知道PHP安装了没有 所以要指定一个目录
让系统知道去那里能找到编译安装的PHP

Linux
CentOS系统上安装完php和MySQL后,为了使用方便,需要将php和mysql命令加到系统命令中,如果在没有添加到环境变量之前,执行
“php
-v”命令查看当前php版本信息时时,则会提示命令不存在的错误,下面我们详细介绍一下在linux下将php和mysql加入到环境变量中的方法(假
设php和mysql分别安装在/usr/local/webserver/php/和/usr/local/webserver/mysql/中)。

方法一:直接运行命令export PATH=$PATH:/usr/local/webserver/php/bin 和
export PATH=$PATH:/usr/local/webserver/mysql/bin

使用这种方法,只会对当前会话有效,也就是说每当登出或注销系统以后,PATH
设置就会失效,只是临时生效。

方法二:执行vi
~/.bash_profile修改文件中PATH一行,将/usr/local/webserver/php/bin 和
/usr/local/webserver/mysql/bin 加入到PATH=$PATH:$HOME/bin一行之后

这种方法只对当前登录用户生效

方法三:修改/etc/profile文件使其永久性生效,并对所有系统用户生效,在文件末尾加上如下两行代码
PATH=$PATH:/usr/local/webserver/php/bin:/usr/local/webserver/mysql/bin
export PATH

或者   export
PATH=$PATH:/usr/local/webserver/php/bin:/usr/local/webserver/mysql/bin

最后:执行 命令source /etc/profile或 执行点命令
./profile使其修改生效,执行完可通过echo $PATH命令查看是否添加成功。

启动 php 服务的时候 

sudo /usr/local/php/sbin/php-fpm  

会出现

错误:

[10-Apr-2013 18:12:02] NOTICE: PHP message: PHP Deprecated:  Comments
starting with ‘#’ are deprecated in /usr/local/php/lib/php.ini on line
1874 in Unknown on line 0
[10-Apr-2013 18:12:02] ERROR: failed to open configuration file
‘/usr/local/php/etc/php-fpm.conf’: No such file or directory (2)
[10-Apr-2013 18:12:02] ERROR: failed to load configuration file
‘/usr/local/php/etc/php-fpm.conf’
[10-Apr-2013 18:12:02] ERROR: FPM initialization failed

这时候 是 php 找不到 配置文件php-fpm.conf

解决办法: 
cd /usr/local/php/etc/ 

sudo cp php-fpm.conf.default php-fpm.conf

再启动
sudo /usr/local/php/sbin/php-fpm

出现错误:

[10-Apr-2013 18:14:09] NOTICE: PHP message: PHP Deprecated:  Comments
starting with ‘#’ are deprecated in /usr/local/php/lib/php.ini on line
1874 in Unknown on line 0
[10-Apr-2013 18:14:09] ERROR: [pool www] cannot get gid for group
‘nobody’
[10-Apr-2013 18:14:09] ERROR: FPM initialization failed

原因是  [pool www] cannot get gid for group ‘nobody’  没有这个用户 
我之前编译的时候 指定用户 是 www   所以进入 vi 
/usr/local/php/etc/php-fpm.conf    
修改 

user = www
group = www
 

然后 测试PHP是否安装成功

在网站跟目录下 写入 一个测试 PHP是否安装成功的 
我的nginx 根目录是 /usr/local/nginx/html/

sudo vi   index.php

  <?php phpinfo(); ?>

保存

然后测试下即可

php 5.4.11,php5.4.11 第一步 先下载
tzr.gz 的php源码包 然后 tar zxvf php-5.4.11.tar.gz 然后 cd php-5.4.11
然后复制如下编译代码 ./configure \ -…

./configure –prefix=/usr/local/php7 –with-pdo-mysql=mysqlnd
–with-mysqli=mysqlnd  –with-jpeg-dir –with-png-dir –with-zlib
–enable-xml –with-libxml-dir –with-curl –enable-bcmath
–enable-shmop –enable-sysvsem  –enable-inline-optimization
–enable-mbregex –with-openssl –enable-mbstring –with-gd
–enable-gd-native-ttf –with-freetype-dir=/usr/lib64
–with-gettext=/usr/lib64 –enable-sockets –with-xmlrpc –enable-zip
–enable-soap –disable-debug –enable-opcache –enable-zip
–with-config-file-path=/usr/local/php7/etc –enable-fpm
–with-fpm-user=nginx –with-fpm-group=nginx

在php配置时候出现一个问题,代码提示

sudo apt-get install \
build-essential \
gcc \
g++ \
autoconf \
libiconv-hook-dev \
libmcrypt-dev \
libxml2-dev \
libmysqlclient-dev \
libcurl4-openssl-dev \
libjpeg8-dev \
libpng12-dev \
libfreetype6-dev \

make && make install

Fatal error: Uncaught exception 'PDOException' with message 'could not find driver' in 

wget

为php提供配置文件:
cp php.ini-production /usr/local/php7/etc/php.ini

我以为是pdo没有装,然后就开始装pdo,编译后一直报错,然后看论坛一群人抄啊抄的什么都不知道,还抄错的,让人恼火。然后stackoverflow上有人说,pdo是php自带的,不会没装啊。

tar -zxvf php-5.6.30

为php-fpm提供Sysv init脚本,并将其添加至服务列表:
cp sapi/fpm/init.d.php-fpm  /etc/rc.d/init.d/php-fpm
chmod +x /etc/rc.d/init.d/php-fpm
chkconfig –add php-fpm
chkconfig php-fpm on

我看了下自己编译的语句

cd php-5.6.30

为php-fpm提供配置文件:
#
cp /usr/local/php7/etc/php-fpm.conf.default
/usr/local/php7/etc/php-fpm.conf

--disable-pdo

./configure   –prefix=/usr   –sysconfdir=/etc   –with-config-file-path=/etc   –without-pear   –enable-fpm   –with-fpm-user=www-data    –with-fpm-group=www-data    –enable-opcache  –enable-mbstring    –enable-mbregex  –without-pdo-sqlite   –with-mysql-sock=/var/run/mysqld/mysqld.sock    –with-mysql=mysqlnd    –with-mysqli=mysqlnd –with-pdo-mysql=mysqlnd –with-openssl   –with-curl  –with-zlib   –enable-zip    –with-gd   –with-freetype-dir    –with-jpeg-dir  –with-png-dir  –with-mcrypt    –enable-sockets    -with-xmlrpc     –enable-soap  

编辑php-fpm的配置文件:
# vim /usr/local/php7/etc/php-fpm.conf
配置fpm的相关选项为你所需要的值,并启用pid文件(如下最后一行):
pid = /usr/local/php7/var/run/php-fpm.pid

f***!怪自己copy没看清,不过除了这个坑以外,这个文章安装nginx、php都靠谱(

make && make install

cp /usr/local/php7/etc/php-fpm.d/www.conf.default
/usr/local/php7/etc/php-fpm.d/www.conf
 vim /usr/local/php7/etc/php-fpm.d/www.conf
pm.max_children = 150
pm.start_servers = 8
pm.min_spare_servers = 5
pm.max_spare_servers = 10
接下来就可以启动php-fpm了:
# service php-fpm start

然后删了重新编译一遍,–enable-pdo,发现还是不行。

cp php.ini-production /etc/php.ini

 

然后就看到了某个帖子(看了太多,但是这个帖子是国外的),提示去php解压缩目录的ext下有mysql的文件(不需要去pecl下载对应的扩展包),进去以后

#设置php-fpm系统启动加载项
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod 755 /etc/init.d/php-fpm
update-rc.d php-fpm defaults

git clone

phpize
./configure
make && make install

#拷贝php-fpm.conf
cp /etc/php-fpm.conf.default /etc/php-fpm.conf

cd phpredis

然后去php.ini里面加一句

git checkout php7 #拉取php7分支
  /usr/local/php7/bin/phpize #用phpize生成configure配置文件
 ./configure –with-php-config=/usr/local/php7/bin/php-config #配置

extension=pdo_mysql.so

make && make install

搞定!

extension=redis.so #php.ini添加

顺便php.ini位置可以在

修改 php.ini 文件。加载 redis.so 模块,重启服务。

echo phpinfo();exit;

中看到,如果Loaded Configuration
File参数是null,就去php解压缩目录里面找到php.ini-production
复制到Configuration File (php.ini)
Path这个参数显示的路径上去,然后就会显示啦

相关文章