導航:首頁 > 編程語言 > phpliconv

phpliconv

發布時間:2023-05-29 23:45:09

編譯php時make ZEND_EXTRA_LIBS='-liconv'這句命令中ZEND_EXTRA_LIBS='-liconv'起什麼作用呢

如果不加make ZEND_EXTRA_LIBS='-liconv' ,在編譯php的時候,config可能沒有問題,但在make的時候可能出現undefined reference to `libiconv_open'
collect2: ld returned 1 exit status
make: *** [sapi/cli/php] Error 1
所以為了解決這個問題,需要使用make ZEND_EXTRA_LIBS='-liconv'

linux系統中設置多版本PHP共存配合Nginx伺服器使用

應用環境
LNMP的環境,當前PHP版本5.3.8,遇到一個應用需求只支持PHP
5.2.x,又希望保持現有應用還是用PHP
5.3.8。也就是說需要兩個版本的PHP同時存在,供nginx根據需要調用不同版本。
思路
Nginx是通過PHP-FastCGI與PHP交互的。而PHP-FastCGI運行後會通過文件、或本地埠兩種方式進行監聽,在Nginx中配置相應的FastCGI監聽埠或文件即實現Nginx請求對PHP的解釋。
既然PHP-FastCGI是監聽埠和文件的,那就可以讓不同版本的PHP-FastCGI同時運行,監聽不同的埠或文件,Nginx中根據需求配置調用不同的PHP-FastCGI埠或文件,即可實現不同版本PHP共存了。
配置記錄
下面記錄簡單的配置流程,基於已經安裝了lnmp的debian環境。當前版本的PHP是5.3.8,位於/usr/local/php。
1.下載PHP-5.2.14及相關的FPM、autoconf組件:
mkdir
~/php5.2
cd
~/php5.2
wget
-c
http://museum.php.net/php5/php-5.2.14.tar.gz
wget
-c
http://php-fpm.org/downloads/php-5.2.14-fpm-0.5.14.diff.gz
2.解壓PHP-5.2.14,並打上PHP-FPM的補丁:
tar
zxvf
php-5.2.14.tar.gz
gzip
-cd
php-5.2.14-fpm-0.5.14.diff.gz
|
patch
-d
php-5.2.14
-p1
3.如果你已經通過lnmp安裝,應該已經安裝好了autoconf,如果沒有,請自行下載並編譯autoconf-2.13,然後設置autoconf環境變數:
export
PHP_AUTOCONF=/usr/local/autoconf-2.13/bin/autoconf¬
export
PHP_AUTOHEADER=/usr/local/autoconf-2.13/bin/autoheader
3.編譯安裝PHP-5.2.14在新的路徑(/usr/local/php-5.2.14)下,注意–prefix、–with-config-file-path的路徑,並且打開fastcgi和fpm選項:
cd
php-5.2.14/
./buildconf
--force
./configure
--prefix=/usr/local/php-5.2.14
--with-config-file-path=/usr/local/php-5.2.14/etc
--with-mysql=/usr/local/mysql
--with-mysqli=/usr/local/mysql/bin/mysql_config
--enable-fastcgi
--enable-fpm
make
ZEND_EXTRA_LIBS='-liconv'
make
install
4.設置/usr/local/php-5.2.14/etc/php-fpm.conf,監聽埠:
<value
name="listen_address">127.0.0.1:9001</value>
或者監聽文件:
<value
name="listen_address">/path/to/unix/socket</value>
其他參數根據伺服器環境和需求自行定製。
5.啟動php-fpm,以後可以通過php-fpm進行管理:
/usr/local/php-5.2.14/sbin/php-fpm
start
字php5.3.3後,php已經將php-fpm繼承到php中,而且內置的php-fpm默認不支持(start|stop|reload)的平滑啟動參數,需要使用官方源代碼中提供的啟動腳本來控制:
cp
-f
(php
-5.3.x-source-dir)/sapi/fpm/init.d.php-fpm
/etc/init.d/php-fpm
chmod
755
/etc/init.d/php-fpm
/etc/init.d/php-fpm
start
php-fpm支持的操作:
start,啟動PHP的FastCGI進程。
stop,強制終止PHP的FastCGI進程。
quit,平滑終止PHP的FastCGI進程。
restart,
重啟PHP的FastCGI進程。
reload,
重新載入PHP的php.ini。
logrotate,
重新啟用log文件。
5.3.3的php-fpm腳本支持的操作:start|stop|force-quit|restart|reload|status
6.配置好PHP-5.2.14的php.ini,重新載入生效:
vi
/usr/local/php-5.2.14/etc/php.ini
/usr/local/php-5.2.14/sbin/php-fpm
reload
7.修改nginx配置,對需要的服務配置使用PHP-5.2.14:
location
~
.*.(php|php5)?$
{
fastcgi_pass
127.0.0.1:9001;
fastcgi_index
index.php;
include
fcgi.conf;
}
8.記錄一下自己編譯php5.5.10使用的配置
./configure
--prefix=/usr/local/php-5.5.10
--with-config-file-path=/usr/local/php-5.5.10/etc
--with-mysql=mysqlnd
--with-mysqli=mysqlnd
--with-bz2
--with-curl=/usr/bin
--enable-ftp
--enable-sockets
--disable-ipv6
--with-gd
--with-jpeg-dir=/usr/local
--with-png-dir=/usr/local
--with-freetype-dir=/usr/local
--enable-gd-native-ttf
--with-iconv-dir=/usr/local
--enable-mbstring
--enable-calendar
--with-gettext
--with-libxml-dir=/usr/local
--with-zlib
--with-pdo-mysql=mysqlnd
--enable-dom
--enable-xml
--enable-fpm
--with-libdir=lib64
--with-mcrypt=/usr/bin
--enable-zip
--enable-soap
--enable-mbstring
--with-gd
--with-openssl
--enable-pcntl
--with-xmlrpc
--enable-opcache

❸ php 7.3 /usr/bin/ld: cannot find -liconv 編譯一直報這個錯.vim Makefile 也添加過-liconv還是報錯

首先,你要檢查系統是否安裝了libiconv,數喊沒如果已安裝了最新版本,此步忽略;
第二,如果還是報錯,可能libiconv.so庫文件找不到引起的,編譯php時,使用如下薯納命令:
1、滲羨sh> make ZEND_EXTRA_LIBS='-liconv'
2、修改配置:
sh> cat /etc/ld.so.conf
sh> include ld.so.conf.d/*.conf
sh> echo "/usr/local/lib" >> /etc/ld.so.conf
sh> ldconfig
3、sh> make install

❹ php 用 exec 調用外部命令時,返回 127 錯誤碼是什麼意思

編譯安裝php 的時候, 執行make報錯誤
make: *** [ext/phar/phar.php] Error 127
解決的方法如下:
#vi /etc/ld.so.conf
在裡面加上一行
/usr/local/lib
2.然後運行/sbin/ldconfig
#/sbin/ldconfig
編譯make
#make ZEND_EXTRA_LIBS='-liconv'
拋錯:
Generating phar.phar
chmod: cannot access `ext/phar/phar.phar': No such file or directory
make: [ext/phar/phar.phar] Error 1 (ignored)

Build complete.
Don't forget to run 'make test'.
此處可以忽略 不過解決辦法如下
#cd ext/phar/
#cp ./phar.php ./phar.phar
然後到php5.4文件夾
#make ZEND_EXTRA_LIBS='-liconv'
#make test
#make install

❺ [求助][急!!]php和iconv庫交叉編譯的問題

可以在-with-iconv-dir= 後面接上你的iconv安裝路徑 比如 --with-iconv-dir=/usr/local/iconv

❻ php伺服器升級怎麼寫 csdn

伺服器類型 CentOS 6.5

因為項目要用到php5.4以上的新功能 目前伺服器還是用php5.3.8版本 所以升級版本就非常需要了。


首先 連上伺服器 先把 PHP-fpm服務關閉(其實不影響的,因為程序在內存裡面跑 不關也沒事的) 然後 先把 /usr/local/php 重命名 以防止如果新版本更新失敗 回滾


[plain] view plain 在CODE上查看代碼片派生到我的代碼片

mv /usr/local/php /usr/local/php5.3.8


然後 下載最新版本php5.6.3 並且解壓


[plain] view plain 在CODE上查看代碼片派生到我的代碼片

wget

tar -zxvf php-5.6.3.tar.gz


因為是升級 所以 php很多依賴包我都已經裝過了 先貼上我的 configure 配置參數

[plain] view plain 在CODE上查看代碼片派生到我的代碼片

./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-fpm-user=www --with-fpm-group=www --enable-fpm --enable-opcache --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --disable-fileinfo --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-bcmath --enable-shmop --enable-exif --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-ftp --with-gettext --enable-zip --enable-soap --disable-ipv6 --disable-debug


其中 最為注意的是 開啟 opcache 可以緩存opcode 提高php性能

還有 --disable-debug --disable-ipv6 關閉 debug ipv6 可以提升性能


第一次make 出錯了

[plain] view plain 在CODE上查看代碼片派生到我的代碼片

ext/iconv/.libs/iconv.o: In function `php_iconv_stream_filter_ctor':

/home/king/php-5.2.13/ext/iconv/iconv.c:2491: undefined reference to `libiconv_open'

collect2: ld returned 1 exit status

make: *** [sapi/cli/php] Error 1


網上找到解決辦法

在安裝 PHP 到系統中時要是發生「undefined reference to libiconv_open'」之類的錯誤信息,那表示在「./configure 」沒抓好一些環境變數值。錯誤發生點在建立「-o sapi/cli/php」是出錯,沒給到要 link 的 iconv 函式庫參數。 解決方法:編輯Makefile 大約77 行左右的地方: EXTRA_LIBS = ..... -lcrypt 在最後加上 -liconv,例如: EXTRA_LIBS = ..... -lcrypt -liconv 然後重新再次 make 即可。

然後 重新make 順利通過了


[plain] view plain 在CODE上查看代碼片派生到我的代碼片

make clean #清除上次編譯生成的 obj文件

make ZEND_EXTRA_LIBS='-liconv'

make install


配置 優化下 php.ini 具體參數可以網路下 都是比較容易理解的

[plain] view plain 在CODE上查看代碼片派生到我的代碼片

sed -i 's@^output_buffering =@output_buffering = On output_buffering =@' /usr/local/php/etc/php.ini

sed -i 's@^;cgi.fix_pathinfo.*@cgi.fix_pathinfo=0@' /usr/local/php/etc/php.ini

sed -i 's@^short_open_tag = Off@short_open_tag = On@' /usr/local/php/etc/php.ini

sed -i 's@^expose_php = On@expose_php = Off@' /usr/local/php/etc/php.ini

sed -i 's@^request_order.*@request_order = "CGP"@' /usr/local/php/etc/php.ini

sed -i 's@^;date.timezone.*@date.timezone = Asia/Shanghai@' /usr/local/php/etc/php.ini

sed -i 's@^post_max_size.*@post_max_size = 50M@' /usr/local/php/etc/php.ini

sed -i 's@^upload_max_filesize.*@upload_max_filesize = 50M@' /usr/local/php/etc/php.ini

sed -i 's@^;upload_tmp_dir.*@upload_tmp_dir = /tmp@' /usr/local/php/etc/php.ini

sed -i 's@^max_execution_time.*@max_execution_time = 5@' /usr/local/php/etc/php.ini

sed -i 's@^disable_functions.*@disable_functions = passthru,exec,system,chroot,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,fsocket,popen@' /usr/local/php/etc/php.ini

sed -i 's@^session.cookie_httponly.*@session.cookie_httponly = 1@' /usr/local/php/etc/php.ini

sed -i 's@^mysqlnd.collect_memory_statistics.*@mysqlnd.collect_memory_statistics = On@' /usr/local/php/etc/php.ini


剛才裝了 opcache 模塊 這里設置下

[plain] view plain 在CODE上查看代碼片派生到我的代碼片

sed -i 's@^

opcache

@[opcache] zend_extension=opcache.so@' $php_install_dir/etc/php.ini

sed -i 's@^;opcache.enable=.*@opcache.enable=1@' $php_install_dir/etc/php.ini

sed -i "s@^;opcache.memory_consumption.*@opcache.memory_consumption=128" $php_install_dir/etc/php.ini

sed -i 's@^;opcache.interned_strings_buffer.*@opcache.interned_strings_buffer=8@' $php_install_dir/etc/php.ini

sed -i 's@^;opcache.max_accelerated_files.*@opcache.max_accelerated_files=4000@' $php_install_dir/etc/php.ini

sed -i 's@^;opcache.revalidate_freq.*@opcache.revalidate_freq=60@' $php_install_dir/etc/php.ini

sed -i 's@^;opcache.save_comments.*@opcache.save_comments=0@' $php_install_dir/etc/php.ini

sed -i 's@^;opcache.fast_shutdown.*@opcache.fast_shutdown=1@' $php_install_dir/etc/php.ini

sed -i 's@^;opcache.enable_cli.*@opcache.enable_cli=1@' $php_install_dir/etc/php.ini

sed -i 's@^;opcache.optimization_level.*@;opcache.optimization_level=0@' $php_install_dir/etc/php.ini


生成下 php-fpm 文件

[plain] view plain 在CODE上查看代碼片派生到我的代碼片

vim /usr/local/php/etc/php-fpm.conf

[global]

pid = /usr/local/php/var/run/php-fpm.pid

error_log = /usr/local/php/var/log/php-fpm.log

log_level = notice

[www]

listen = /tmp/php-cgi.sock

listen.backlog = -1

listen.allowed_clients = 127.0.0.1

listen.owner = www

listen.group = www

listen.mode = 0666

user = www

group = www

pm = dynamic

pm.max_children = 10

pm.start_servers = 2

pm.min_spare_servers = 1

pm.max_spare_servers = 6

request_terminate_timeout = 100

request_slowlog_timeout = 0

slowlog = var/log/slow.log


添加到系統服務

[plain] view plain 在CODE上查看代碼片派生到我的代碼片

cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

chmod +x /etc/init.d/php-fpm

chkconfig --add php-fpm

chkconfig php-fpm on


搞定了啟動

[plain] view plain 在CODE上查看代碼片派生到我的代碼片

service php-fpm start

❼ 編譯PHP出錯:MAKE: *** [EXT/OPENSSL/OPENSSL.LO] ERROR 1

新手在不會編譯仔歷的情況下可以yum

1、安裝PHP5
yuminstallphp
根據提示輸入Y直到安裝完成
2、舉戚鏈安裝PHP組件,使PHP5支持MySQL
yuminstallphp-mysqlphp-gdlibjpeg*php-imapphp-ldapphp-odbcphp-pear正孫php-xmlphp-xmlrpcphp-mbstringphp-mcryptphp-bcmathphp-mhashlibmcrypt

❽ 請教centos php 多版本安裝共存切換

Linux下部署php多版本共存
背景說明
自php7問世,身為最新版本控的我馬上升級體驗,但是由於伺服器上還有舊程序在運行,只好部署一個php多版本共存環境。
現有環境是lnmp
- CentOS 6.7
- nginx 1.10.1
- mariadb-10.0.26
- php 7.0.8
為了更好兼容舊的php程序,推薦使用5.4.45. 主要是兼容mysql擴展。
開始安裝
首先要下載php-5.4.45.tar.gz源碼包。
通過源碼安裝
# tar xzvf php-5.4.45.tar.gz
# cd php-5.4.45

# ./configure --prefix=/usr/local/php54 --with-config-file-path=/usr/local/php54/etc --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-iconv-dir --with-freetype-dir=/usr/local/freetype --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-mbstring --with-mcrypt --enable-ftp --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --with-gettext --disable-fileinfo --enable-intl --with-xsl

# make ZEND_EXTRA_LIBS='-liconv'
# make install
# cp php.ini-proction /usr/local/php/etc/php.ini

------------------------------------------------------------------------------------------------
php.ini 配置
post_max_size = 50M
upload_max_filesize = 50M
date.timezone = PRC
short_open_tag = On
cgi.fix_pathinfo=0
max_execution_time = 300
disable_functions=passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,popen,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server
------------------------------------------------------------------------------------------------
php-fpm.conf 配置
------------------------------
# vim /usr/local/php/etc/php-fpm.conf1
[global]
pid = /usr/local/php54/var/run/php-fpm.pid
error_log = /usr/local/php54/var/log/php-fpm.log
log_level = notice

[www]
listen = /tmp/php54-cgi.sock
listen.backlog = -1
listen.allowed_clients = 127.0.0.1:9001
listen.owner = www
listen.group = www
listen.mode = 0666
user = www
group = www
pm = dynamic
pm.max_children = 40
pm.start_servers = 20
pm.min_spare_servers = 20
pm.max_spare_servers = 40
request_terminate_timeout = 100
request_slowlog_timeout = 0
slowlog = var/log/slow.log

----------------------------------------------------------------------------------
啟動 php-fpm
# cp sapi/fpm/init.d.php-fpm /etc/init.d/php54-fpm
# chmod +x /etc/init.d/php54-fpm
# /etc/init.d/php54-fpm start
-------------------------------------------------------------------------------------------
修改nginx配置,對需要的服務配置使用php-5.4.45
location ~ [^/]\.php(/|$)
{
try_files $uri =404;
fastcgi_pass unix:/tmp/php54-cgi.sock;
fastcgi_index index.php;
include fastcgi.conf;
}
----------------------------------------------------------------------------------------
配置php-5.4.45 的php54-fpm 開機自動啟動
# chkconfig --add php54-fpm
# chkconfig php54-fpm on

❾ 一個系統可以兩個版本的php並存嗎

多版本共存且同時運行,你可以用PHPWAMP8.8.8.8IN版本集成環境
PHPWAMP支持iis、apache、nginx等web伺服器,系統環境受損也能正常運行!
並全部支持php多版本同時運行,無限自定義mysql、php版本,同時運行N個php版本都沒問題。

-------以下內容摘自今日頭條程序員IT快報新聞--------------
PHPWAMP無視VC運行庫,無視系統DLL是否完整是否受損,無視系統原因造成的各種PHP環境運行障礙
在電腦系統缺失必備組件或DLL受損的情況下依然能正常運行,不用安裝vc,不用在乎系統dll是否完整
資料庫文件太大懶得轉移?Mysql自定義的妙用,物理轉移其他環境mysql版本,輕松實現網站搬家!
Mysql自定義功能可一鍵吸收xampp、phpstudy、wampserver、apmserv等所有PHP集成環境的Mysql資料庫,也可以把Mysql官方全部歷史版本收納,隨意切換任何Mysql歷史版本,常用工具可以強行修改所有環境的Mysql資料庫密碼。

升級的「強制清除環境阻礙」功能是歷史版本中最簡單粗暴的,一鍵轟掉系統佔用80埠以及系統引起的各種異常
三大主流Web伺服器分別帶有功能強大的站點管理(右鍵功能更符合UEO)
iis站點一鍵配置,支持無限個PHP版本同時運行,無限自定義mysqlphp版本,無視VC等系統Dll依賴。
Nginx站點一鍵配置,支持無限個PHP版本同時運行,無限自定義mysqlphp版本,無視VC等系統Dll依賴。
Apache站點一鍵配置,支持無限個PHP版本同時運行,無限自定義mysqlphp版本,無視VC等系統Dll依賴。

❿ linux 32位系統 編譯php報錯

網頁鏈接

源碼的一個BUG,可修改源碼文件再編譯,或者按照鏈接說的加上 libcrypt庫

閱讀全文

與phpliconv相關的資料

熱點內容
查看電腦密碼策略命令 瀏覽:752
bgp雲伺服器哪家好 瀏覽:130
和貓有關的五個字電影高跟鞋 瀏覽:134
我一個人演了全世界 小說 瀏覽:873
義蓋雲天紋身是幾分 瀏覽:32
找一部男人變成女人的片子車牌 瀏覽:440
不卡免費電影 瀏覽:372
國際服伺服器卡頓怎麼辦 瀏覽:944
攀登者電影英文翻譯 瀏覽:758
台灣經典老片在線 瀏覽:892
滅國公主小說 瀏覽:191
韓國電影中兄弟兩個叫朴尚銀,朴國昌 瀏覽:668
你和他是怎麼去電影院?英語 瀏覽:453
娃娃的鬼電影 瀏覽:771
債法原理pdf 瀏覽:143
家庭高級課程 女主角 瀏覽:221
法國電影勞拉失憶症在線播放 瀏覽:959
類似七界傳說的小說 瀏覽:580
李采潭2022年主演的電影 瀏覽:698
愛情大尺度外國電影 瀏覽:612