编译php支持curl和pdo_mysql---for cURL in default path... not found

jackxiang 2010-8-19 16:48 | |
  安装curl
  
  
  1. curl 是 php 標準庫,所以可以在原來的 phpX.X.X.tar.gz 中找到。
  2. 進入 php 目錄中的 ext 找到 curl
  3. 在 curl 目錄中執行 /usr/local/php5-fastcgi/bin/phpize
  4. 再來將他生成的檔案進行 ./configure –with-php-config=/usr/local/php5-fastcgi/bin/php-config
  5. 再來就是 make
  6. 再來也就是 make install
  7. 因為現在已經安裝了 curl.so
  8. 所以就要在 php.ini 中加入 extension = curl.so
  9. 重啟 Web Server ?
  10.最後應該使用 就可以看到成功安裝?
  
  ##############################################################################
  安装cURL
   # wget http://curl.haxx.se/download/curl-7.17.1.tar.gz
   # tar -zxf curl-7.17.1.tar.gz
   # ./configure --prefix=/usr/local/curl
   # make; make install
  安装php
   只要打开开关 --with-curl=/usr/local/curl
   就可以了。
  
  ###############################################################################
  
  安装pdo-mysql
  原来编译php的时候,没有把dpo_mysql相关的参数带上,安装完后才发现。再重新编译有点费时间,所以决定单独来安装。
  先到http://pecl.php.net/找需要的版本,我用的是稳定的版本。要先看看说明,特别是要注意mysql的php的版本。
  wget http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz
  tar xzvf PDO_MYSQL-1.0.2.tgz
  cd PDO_MYSQL-1.0.2
  /usr/local/php/bin/phpize
  Configuring for:
  PHP Api Version: 20041225
  Zend Module Api No: 20060613
  Zend Extension Api No: 220060519
  ./configure --with-php-config=/usr/local/php/bin/php-config
  经过configure就可以make了
  make
  make install
  注意pdo_mysql的全路径,我的是:
  /usr/local/php/lib/php/extensions/debug-non-zts-20060613/pdo_mysql.so
  然后在/usr/local/lib/php.ini
  加上一句:
  extension=/usr/local/php/lib/php/extensions/debug-non-zts-20060613/pdo_mysql.so
  重新启动apache即可看到已经加载pdo_mysql成功。

[~/webserver/php/php-5.2.6/ext/curl]# /usr/local/php/bin/phpize
Configuring for:
PHP Api Version:         20041225
Zend Module Api No:      20060613
Zend Extension Api No:   220060519
[~/webserver/php/php-5.2.6/ext/curl]# ./configure -with-php-config=/usr/local/php/bin/php-config



1.找到当前运行的php版本的源代码目录。进入curl扩展库目录。

[root@vnegar ~]# cd /usr/local/src/php-5.2.11/ext/curl

2.调用phpize程序生成编译配置文件。

[root@vnegar curl]# /usr/local/php/bin/phpize

3.编译扩展库,分别执行下面的configure和make命令。

[root@vnegar curl]# ./configure --with-php-config=/usr/local/php/bin/php-config

报错如下: checking for cURL in default path... not found configure: error: Please reinstall the libcurl distribution - easy.h should be in /include/curl/

解决办法:yum -y install curl-devel

make: make成功执行后,生成的扩展库文件在当前目录的modules子目录下

[root@vnegar curl]# make test Build complete. Don't forget to run 'make test'. ERROR: Cannot run tests without CLI sapi.

4.配置php.ini文件在php.ini文件中找到设置扩展目录的位置,然后将扩展路径设置到apache2 modules目录下。

extension_dir = “/usr/local/apache2/modules/”

vi /usr/local/php/etc/php.ini

将 ; Directory in which the loadable extensions (modules) reside. extension_dir = "./"

改为: ; Directory in which the loadable extensions (modules) reside. extension_dir = "/usr/local/apache2/modules/"

##在php.ini的添加扩展库位置,设置要添加的扩展库。extension=curl.so

##以后如果还要添加别的扩展库的话,则只需先将php扩展库编译好,然后copy到apache2 modules目录下 ##然后再在这个位置,添加一行将编译后的扩展库文件名加上即可。

5.重启apache,查看phpinfo信息,即可看到刚才添加进去的curl扩展库。

结果还是出错,只好下载curl-7.19.3.tar.bz2,解压后编译,然后再编译php,提示
configure: error: libjpeg.(a|so) not found.
那就下载libjpeg,
wget http://www.ijg.org/files/jpegsrc.v8.tar.gz
注意不要下载那个windows版本,即jpegsr8.zip。然后编译安装,现在提示
configure: error: libpng.(a|so) not found.
下载libpng,注意不要下载zip版本,否则./configure时会出现
-bash: ./configure:/bin/sh^M:损坏的解释器: 没有该文件或目录

今天配置一台server的php支持curl的时候, 出现如下报错

    checking for cURL in default path... not found
    configure: error: Please reinstall the libcurl distribution -
    easy.h should be in /include/curl/

其实就是curl的dev包没有安装, 解决方案:
终端下

    # yum -y install curl-devel

然后就可以继续了



在Wordpress中启用插件Flickr Photo Album for WordPress时,需要系统支持cURL。
大多数资料里都是比较简单的方法,即在编译php时加上cURL支持
但由于我的系统里已经安装有php,并且有一些其他配置,重新安装太麻烦
于是找到了这篇《linux php 扩展库编译》,验证通过,转载以记录一下
以php curl 扩展库编译为例。

假如原先编译的php目录在/oracle/php4目录下;apache在/oracle/apache2目录下;php源代码在/home/wugw目录下。如果实际目录与假定的目录不一致,则在下面的命令中做调整。

1. 找到当前运行的php版本的源代码目录,如 php-4.4.7。进入curl扩展库目录。
$cd /home/wugw/php-4.4.7/ext/curl

2. 调用phpize程序生成编译配置文件。
$/oracle/php4/bin/phpize

3. 编译扩展库,分别执行下面的configure和make命令。
$./configure –with-php-config=/oracle/php4/bin/php-config

##configure这一步执行通过后,再执行make命令,如果configure执行不通过,则查找错误原因。
$make

##make成功执行后,生成的扩展库文件在当前目录的 modules 子目录下,如 /home/wugw/php-4.4.7/ext/curl/modules/curl.so

4. 配置php.ini文件
##将编译好的扩展库文件复制到apache2 modules目录下。
$cp /home/wugw/php-4.4.7/ext/curl/modules/curl.so /oracle/apache2/modules/.

##找到php.ini文件所在目录位置,然后编辑。可以通过查看phpinfo信息来确定php.ini文件位置。
##在php.ini文件中找到设置扩展目录的位置,然后将扩展路径设置到apache2 modules目录下
extension_dir = “/oracle/apache2/modules/”

##在php.ini的设置扩展库位置,设置要添加的扩展库。
extension=curl.so

##以后如果还要添加别的扩展库的话,则只需先将php扩展库编译好,然后copy到apache2 modules目录下,
##然后再在这个位置,另取一行将编译后的扩展库文件名加上即可

5. 重启apache,查看phpinfo信息,即可看到刚才添加进去的curl扩展库。


服务器运行一段时间后,可能突然会需求添加某个扩展,如curl、pdo、xmlrpc等,这就需要在不重新编译PHP的情况下独立添加扩展。

下面以安装curl为例,介绍具体安装步骤。

1.安装crul wget http://curl.haxx.se/download/curl-7.19.6.tar.gz tar -zxvf curl-7.19.6.tar.gz cd curl-7.19.6 ./configure –prefix=/usr/local/curl

make

make install

2.编译生成扩展进入php源程序目录中的ext目录中,这里存放着各个扩展模块的源代码,选择你需要的模块,比如curl模块:

cd curl

执行phpize生成编译文件,phpize在PHP安装目录的bin目录下

/usr/local/php5/bin/phpize

运行时,可能会报错:Cannot find autoconf. Please check your autoconf installation and the $PHP_AUTOCONF environment variable is set correctly and then rerun this script.“,需要安装autoconf:

yum install autoconf(RedHat或者CentOS)、apt-get install autoconf(Ubuntu Linux)

生成配置文件,并编译生成模块:

/usr/local/php5/bin/phpize

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

make

make install

这样,curl.so就被复制到PHP对应目录(如:/usr/local/php5/lib/php/extensions/no-debug-non-zts-20090626/)

3.修改配置在php.ini里,设置扩展目录:

extension_dir = “/usr/local/php5/lib/php/extensions/no-debug-non-zts-20090626/”

并添加扩展模块引用:

extension = curl.so

4.检查并重启Apache

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

执行这个命令时,php会去检查配置文件是否正确,如果有配置错误,这里会报错,可以根据错误信息去排查

错误3:
   configure: error: Please reinstall the libcurl distribution -
   easy.h should be in <curl-dir>/include/curl/
   进安装目录里看,easy.h 正活生生躺在指定的位置!
   估计是 --with-curl 的事。
   改成:--with-curl=/usr/local/curl
   ok.

网上一大堆垃圾东西,没有一个靠谱的,我在suse下面是这样编译成功的:
看好了:

发现包依赖有问题,如下:
找到suse的光盘:SLES-10-SP2-DVD-i386-GM-DVD1.iso\suse\i586 把相关的包给拿出去,如下,挨个安装上。
curl-devel-7.15.1-19.7.i586.rpm  libcurl3-devel-7.15.1-1.i386.rpm  php/  php.tar.gz
[~/webserver]# rpm -ihv curl-devel-7.15.1-19.7.i586.rpm
error: Failed dependencies:
        openssl-devel is needed by curl-devel-7.15.1-19.7.i586
        libidn-devel is needed by curl-devel-7.15.1-19.7.i586

[~/webserver]# rpm -ihv libidn-devel-0.6.0-14.2.i586.rpm
Preparing...                ########################################### [100%]
   1:libidn-devel           ########################################### [100%]


[~/webserver]# rpm -ihv openssl-devel-0.9.8a-18.26.i586.rpm
Preparing...                ########################################### [100%]
   1:openssl-devel          ########################################### [100%]


   [~/webserver]# rpm -ihv curl-devel-7.15.1-19.7.i586.rpm
Preparing...                ########################################### [100%]
   1:curl-devel             ########################################### [100%]


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


现在:
...
...
...
checking whether to build shared libraries... yes
checking whether to build static libraries... no

creating libtool
appending configuration tag "CXX" to libtool
configure: creating ./config.status
config.status: creating config.h

#make;make install


Libraries have been installed in:
   /root/webserver/php/php-5.2.6/ext/curl/modules

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the `LD_LIBRARY_PATH' environment variable
     during execution
   - add LIBDIR to the `LD_RUN_PATH' environment variable
     during linking
   - use the `-Wl,--rpath -Wl,LIBDIR' linker flag
   - have your system administrator add LIBDIR to `/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------

Build complete.
Don't forget to run 'make test'.

Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/


ls /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/

curl.so*


就差一个包:curl-devel-7.15.1-19.7 网上说的是对的,但是需要有依赖,得装完才能安装curl-devel-7.15.1-19.7这个rpm包成功。

[~/webserver]# rpm -qa|grep curl
curl-devel-7.15.1-19.7
curl-7.15.1-19.7

特别注意:编译好了需重启apache,curl才能生效。。。否则修改了php.ini命令行生效了,但是通过apache还是不行的喔。特此注意。。。

作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:https://jackxiang.com/post/3408/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!


最后编辑: jackxiang 编辑于2010-8-30 13:31
评论列表
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]