php編譯so
1. libphp5.so是什麼文件
libphp5.so是php5提供的,你還需要編譯php5才能生成這個文件
在PHP的configure的時候,加上:
--with-apxs2=/usr/local/apache/bin/apxs
這樣就會自動編譯一個libphp5.so出來了。
2. PHP7.0怎麼通過打開擴展功能和mysql相連
第一步:進入php源碼中的"ext/mysql"目錄下
第二步:在當前目錄下運行phpize命令:/usr/local/php524/bin/phpize
phpize的規則:去哪個目錄下運行phpize文件,那麼就會在該目錄下生成一個configure文件。
第三步:運行剛才生成的configure文件
命令: ./configure --with-php-config=/usr/local/php524/bin/php-config --with-mysql=/usr/local/mysql/
這里最關鍵的是通過--with-mysql參數告訴mysql客戶端的位置。這樣才能生成mysql.so。
實驗的時候,沒有加這個參數,結果錯誤:
./configure --with-php-config=/usr/local/php524/bin/php-config
第四步:編譯生成.so文件
第五步:配置php引擎載入該擴展。
補充一下:就是去php.ini文件中修改一下配置,載入mysql.so這個擴展(這個擴展文件要放到php指定的擴展目錄下面去)
第六步:測試php引擎是否成功載入該擴展編寫文件phpinfo.php,內容是:<?phpehco phpinfo();?>
運行後,可以看到有如下信息顯示:mysqlMySQLSupport enabledActive PersistentLinks 0
Active Links 0
Client API version 5.1.55
MYSQL_MODULE_TYPE no value
MYSQL_SOCKET /tmp/mysql.sock
MYSQL_INCLUDE no value
MYSQL_LIBS no value
通過這樣的方式可以確認,php引擎已經成功載入了mysql.so擴展。
第七步:已經生成的mysql.so。編寫php代碼測試是否能連接mysql。
3. 請教各位,php如何調用so文件
要確定你調用的so文件不是從別處拷貝來的!!即,你的PHP和你的SO文件是否都是在你的本機編譯運行的。如果不是,則要確定你的SO文件和你的PHP版本是否匹配!最後檢查你調用的so文件的許可權和你的PHP的許可權是否一致
4. 如何編譯安裝PHP擴展
一開始安裝PHP的時候,我們並不知道需要哪些擴展,所以只有等到我們真正用到的時候才想辦法去安裝。
安裝PHP擴展最簡單的辦法就是
sudo apt-get install php5-xxx
但有的時候並非我們所願,源裡面並沒有我們需要的擴展,這時候就需要我們下載源碼自己編譯安裝了。
這篇文章中我將介紹在本地linux平台下編譯安裝PHP擴展的方法。
現在網站根目錄下創建 index.php 列印基本的配置信息,以驗證我們是否安裝成功。
配置編譯環境
我們需要安裝一些編譯必須的庫,還有 php-dev 版本
Ubuntu
sudo apt-get install php5-dev php5-mysql gcc libpcre3-dev
Fedora
sudo yum install php-devel php-mysqlnd gcc libtool
RHEL
sudo yum install php-devel php-mysql gcc libtool
Suse
yast2 -i php5-pear php5-devel php5-mysql gcc
安裝擴展
PHP有兩種可供安裝的擴展:一種是PHP原生的但是默認沒有安裝的,另一種的第三方開發的擴展。
下面依次介紹兩種擴展的安裝方法:
安裝之前我們需要一份和當前機器上相同版本的PHP源碼
cd code
wget http://cn2.php.net/distributions/php-5.5.9.tar.bz2
tar xvjf php-5.5.9.tar.bz2
cd php-5.5.9
前往此處 下載相應的源碼包。
在 /ext 目錄下面可以看到所有PHP原生的擴展。
安裝原生擴展
以 PHP-intl 為例,這是PHP國際化的擴展。
為了安裝這個擴展我們需要先安裝ICU 庫
sudo apt-get install icu-devtools icu-doc libicu-dev libicu52 libicu52-dbg
ICU 安裝成功之後進入/ext/intl 目錄:
cd intl
phpize
./configure --enable-intl
make
sudo make install
下面解釋一下上面的每個命令:
phpize : 是用來擴展php擴展模塊的,通過phpize可以建立php的外掛模塊
./configure --enable-intl: 配置編譯環境,相當於告訴編譯器編譯PHP源碼的時候加上intl這個擴展。
make: 將會把源碼編譯成 intl.so
make install : 將會把 intl.so 移動到當前安裝的 PHP 的擴展目錄。
接下來我們要做的就是在php.ini中啟用這個擴展,這一步將會在最後給出示例。
安裝第三方擴展
將以這個 擴展為例,這個擴展主要實現了PHP識別條形碼的功能。
先安裝必要的依賴
sudo apt-get install pkg-config
git clone https://github.com/mongodb/mongo-php-driver
cd mongo-php-driver
phpize
./configure
make
sudo make install
將會生成一個文件,將其拷貝到PHP的擴展目錄下面。
啟用擴展
在php.ini中啟用擴展的方式有很多:
直接在php.ini文件中添加 extension=mongo.so,這是最簡單直接的方法。
也可以單獨建一個ini文件,然後在php.ini中包含這些文件就可以了。
下面介紹一下第二種方法:
cd `/etc/php5/mods-available`
這個目錄里可以放新建的ini文件,然後執行
sudo touch mongo.ini
echo "extension=mongo.so" | sudo tee -a mongo.ini
sudo touch intl.ini
echo "extension=intl.so" | sudo tee -a intl.ini
上面的命令將會創建ini文件,並且寫如相應的配置信息。
然後執行下面的命令啟用擴展即可(需要安裝 php5enmod 工具):
sudo php5enmod mongo
sudo php5enmod intl
如果未安裝 php5enmod 工具,則需要手動配置:
ln -s /etc/php5/mods-available/mongo.ini /etc/php5/cli/conf.d/mongo.ini
ln -s /etc/php5/mods-available/intl.ini /etc/php5/cli/conf.d/intl.ini
ln -s /etc/php5/mods-available/mongo.ini /etc/php5/fpm/conf.d/mongo.ini
ln -s /etc/php5/mods-available/intl.ini /etc/php5/fpm/conf.d/intl.ini
最後在執行一下重啟操作就可以了:
sudo service nginx restart
sudo service php5-fpm restart
5. php5.6編譯生成libphp5.so的問題求助
由於好久沒有搭環境,在Linux上搭apache、PHP的環境時,遇到libphp5.so 無法生成這個問題,我也困擾了我半天,很是郁悶。從網上找了各種資料,都是瞎轉載,太無聊的一堆人了,自己成功沒有成功的先轉載,鄙視。 害的我嘗試了半天也沒有解決。下面列出我的正確解決辦法:
常見問題一:配置apache打開libphp5.so文件後提示錯誤
/usr/local/apache2/moles/libphp5.so: No such file or directory
解答: 發現moles下面沒有libphp5.so文件,說明安裝apache2的時候配置有問題,需要重新編譯安裝,必須採用 ./configure --enable-so 這種方式。然後重新安裝 make clean -> make -> make install。 然後重新安裝php,安裝時要求採用./configure --with-apxs2=/usr/local/apache2/bin/apxs 這種方式 然後 make & make install。如果還出現這個問題,可以重新安裝一下apache 和 php
常見問題二:在centOS中 配置apache的php時提示錯誤
cannot restore segment prot after reloc: Permission denied
解答:可以網路查看資料,關於centOS中的selinux。SELINUX的問題,對LIB庫的保護。
關閉 SELINUX
vi /etc/selinux/config
#SELINUX=enforcing #注釋掉
#SELINUXTYPE=targeted #注釋掉
SELINUX=disabled #增加
:wq!#保存退出
shutdown -r now#重啟系統
6. linux下apache添加php libphp5.so
libmysqlclient.so.16: cannot open shared object file: No such file or directory
人家說的是沒有找到 libmysqlclient.so.16 。
也就是你的 php 安裝有問題,導致依賴不滿足,apache 無法調用 libphp5.so
這個 libmysqlclient.so.16 應該在 mtsql-client 包裡面。
這個問題充分說明:你看錯教程了。
7. 寶塔php 如何添加自定義so擴展,怎麼添加,怎麼調用
和php安裝擴展一樣,也是要在命令行操作,步驟如下:
進入源碼目錄:
cd xxx
生成配置
/www/server/php/版本/bin/phpize
./configure --with-php-config=/www/server/php/版本/bin/php-config
編譯並安裝:
make && make install
寫配置文件
echo "extension = xxx.so" >> /www/server/php/版本/etc/php.ini
8. linux已經安裝openssl,如何重新編譯php支持openssl模塊
下載php的源代碼,執行三步安裝就行了:
./configure
make && sudo make install
sudo make clean
就可以了,然後編輯php.ini文件加入模塊支持:
extensions=openssl.so
好了。大工告成~~~