歡迎您光臨本站 註冊首頁

Linux下LAMP環境的安裝之編譯安裝過程(四)

←手機掃碼閱讀     火星人 @ 2014-03-08 , reply:0

安裝最新版的PHP模塊

進入php-5.4.3源碼包編譯

[root@discuz php-5.4.3]# ./configure \

> --prefix=/usr/local/php \

> --with-config-file-path=/usr/local/php/etc \

> --with-apxs2=/usr/local/apache242/bin/apxs \

> --with-mysql=/usr/local/mysql/ \

> --with-libxml-dir=/usr/local/libxml2/ \

> --with-png-dir=/usr/local/libpng/ \

> --with-jpeg-dir=/usr/local/jpeg8/ \

> --with-freetype-dir=/usr/local/freetype/ \

> --with-gd=/usr/local/gd2/ \

> --with-zlib-dir=/usr/local/zlib/ \

> --with-mcrypt=/usr/local/libmcrypt/ \

> --with-mysqli=/usr/local/mysql/bin/mysql_config \

> --enable-soap \

> --enable-mbstring=all \

> --enable-sockets

make

配置時可能會出現下面的錯誤:

checking for MySQL support... yes
checking for specified location of the MySQL UNIX socket... no

checking for MySQL UNIX socket location... no
configure: error: Cannot find libmysqlclient_r under /usr/local/mysql. Note that the MySQL client library is not bundled anymore!

其實這跟PHP沒有關係,那是因為在編譯APACHE的時候,使用--with-mpm模塊,在編譯MYSQL的時候加上 --enable-thread-safe-client.參數
這是PHP5.2的一個改進,在PHP5.2.0之前的版本都不需要MYSQL啟用安全線程.關於--enable-thread-safe-client項的官方介紹如下:如何生成線程式客戶端庫總是線程安全的.最大的問題在於從套接字讀取的net.c中的子程序並不是中斷安全的.或許你可能希望用自己的告警中斷對伺服器的長時間讀取,以此來解決問題.如果為SIGPIPE中斷安裝了中斷處理程序,套接字處理功能應是線程安全的.SupeSite/X-為了避免連接中斷時放棄程序,MySQL將在首次調用mysql_server_init()、mysql_init()或mysql_connect()時屏蔽SIGPIPE.如果你打算使用自己的SIGPIPE處理程序,首先應調用mysql_server_init(),然後安裝你的處理程序.

還有第二種解決方法比較方便 :編譯之前,先處理一下mysql的庫,默認查找libmysqlclient_r.so,可是mysql默認為libmysqlclient.so,內容完全一樣,做個鏈接即可
# cd /usr/local/mysql/lib/mysql/
# ln -s libmysqlclient.so.15.0.0 libmysqlclient_r.so

(以上解決方法來自互聯網!)

還會報make: *** [ext/gd/gd.lo] error

解決方法如下:

好像說這個錯誤算是php5.4的bug,下面對應的兩篇文章有對應的說明:

https://bugs.php.net/bug.php?id=55224

https://bugs.php.net/bug.php?id=60108

解決方法:

vi /include/gd_io.h

gdIOCtx結構中增加void *data;

格式如下

typedef struct gdIOCtx

{

int (*getC) (struct gdIOCtx *);

int (*getBuf) (struct gdIOCtx *, void *, int);

void (*putC) (struct gdIOCtx *, int);

int (*putBuf) (struct gdIOCtx *, const void *, int);

/* seek must return 1 on SUCCESS, 0 on FAILURE. Unlike fseek! */

int (*seek) (struct gdIOCtx *, const int);

long (*tell) (struct gdIOCtx *);

我的GD安裝在/usr/local/gd2目錄下,是#vi /usr/local/gd2//include/gd_io.h

libltdl.so.3: cannot open shared object file: No such file or directory make: *** [ext/phar/phar.php] Error 127 解決方法: ln -s /usr/local/lib/libltdl.so.3 /usr/lib/libltdl.so.3 [root@discuz ~]# cd /usr/local/libpng/lib/ [root@discuz lib]# ls libpng15.a libpng15.so libpng15.so.15.10.0 libpng.la pkgconfig libpng15.la libpng15.so.15 libpng.a libpng.so 可以看到libpng15.so.15 然後修改/etc/ld.so.conf 文件:vi /etc/ld.so.conf 在第一行下面追加/usr/local/libpng/lib這個路徑. 然後重新編譯安裝即可. 安裝完成後,需要建立PHP配置文件.在使用configure命令安裝配置時使用“--with-config-file-path=/usr/local/php/etc/”選項,指定了配置文件的位置.將源碼包下面的php.ini-development 文件複製到/usr/local/php/etc/中,並改名為php.ini即可,如下示: [root@discuz php-5.4.3]# cp php.ini-development /usr/local/php/etc/php.ini 整合Apache與PHP,上面編譯之前,我們使用configure命令安裝配置時,使用--with-apxs2=/usr/local/apache242/bin/apxs選項以使Apache 2將PHP作為功能模塊使用.但我們還要修改Apahce配置文件,添加PHP的支持,告訴Apache將哪些後綴作為PHP解析.例如,讓Apache把.php或.phtml後綴名解析為PHP.使用vi打開Apache的配置文件/etc/httpd/httpd.conf,找到AddType application/x-gzip .gz .tgz指令選項,並在其下方添加一條指令AddType application/x-httpd-php .php .phtml.也可以將任何後綴的文件解析為PHP,只要在添加的語句中加入並用空格分開,這裡以多添加一個.phtml來示例,如下示: # If the AddEncoding directives above are commented-out, then you # probably should define those extensions to indicate media types: # AddType application/x-compress .Z AddType application/x-gzip .gz .tgz AddType application/x-httpd-php .php .phtml 修改完成後重啟Apache伺服器,才能重新載入配置文件使修改生效. [root@discuz php-5.4.3]#/usr/local/apache242/bin/apachectl stop [root@discuz php-5.4.3]#/usr/local/apache242/bin/apachectl start 測試PHP環境是否可以正常運行,在/usr/local/apache242/htdocs目錄下建一個test.php或test.phtml的文件,內容如下示: <?php phpinfo(); ?> 打開瀏覽器,在地址欄輸入http://172.30.8.240/test.php來運行該文件,如果出現下圖內容,說明LAMP環境安裝成功.

上例中使用phpinfo()函數,作用是輸出有關PHP當前狀態的大部分信息內容,這包括關於PHP的編譯和擴展信息、PHP版本、伺服器信息和環境、PHP的環境、操作系統信息、路徑、主要的和本地配置選項的值、HTTP頭信息和PHP許可等.因為每個系統的安裝不同,phpinfo()函數可以用於檢查某一特定系統配置設置和可用的預定義變數等.它也是一個寶貴的調試工具,因為它包含了所有EGPCS(Environment,GET,POST,Cookie,Server)數據.

本文出自 「曹壞水」 博客,請務必保留此出處http://cao2012.blog.51cto.com/366908/864805


[火星人 ] Linux下LAMP環境的安裝之編譯安裝過程(四)已經有339次圍觀

http://coctec.com/docs/linux/show-post-45931.html