微擎支持php7,php7.3編譯安裝 支持微擎2.0

本文档详细介绍了在编译安装PHP时遇到的`undefined reference to libiconv_open`错误的解决方法,即在Makefile中添加`-liconv`到EXTRA_LIBS。此外,还涵盖了PHP-FPM启动失败的问题,通过killall php-fpm并重启解决。文章最后给出了PHP-FPM的启动脚本示例。
摘要由CSDN通过智能技术生成

再次整理

//一下配置在命令粘貼時注意句尾加 \ , 在 \ 后不能有空格,不然會自動執行,相當於回車

./configure --prefix=/usr/local/php \--with-config-file-path=/usr/local/php \--enable-fpm \--with-fpm-user=www \--with-fpm-group=www \--enable-embedded-mysqli \--with-curl=/usr \--with-openssl-dir=/usr \--with-gd \

--with-libxml-dir=/usr \--with-mysql-sock=SOCKPATH

with-pdo-dblib

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

[root@test php-5.2.13]# vi Makefile

在安裝 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 ZEND_EXTRA_LIBS='-liconv'

ln -s /usr/local/lib/libiconv.so.2 /usr/lib64/

作者用的第一種辦法解決的,編譯好Makefile后,記得先make clean一下,再make,不然會報錯

[root@third php-7.3.6]# make install

Installing shared extensions:/usr/local/php/lib/php/extensions/no-debug-non-zts-20180731/Installing PHP CLI binary:/usr/local/php/bin/Installing PHP CLI man page:/usr/local/php/php/man/man1/Installing PHP FPM binary:/usr/local/php/sbin/Installing PHP FPM defconfig:/usr/local/php/etc/Installing PHP FPM man page:/usr/local/php/php/man/man8/Installing PHP FPM status page:/usr/local/php/php/php/fpm/Installing phpdbg binary:/usr/local/php/bin/Installing phpdbg man page:/usr/local/php/php/man/man1/Installing PHP CGI binary:/usr/local/php/bin/Installing PHP CGI man page:/usr/local/php/php/man/man1/Installing build environment:/usr/local/php/lib/php/build/Installing header files:/usr/local/php/include/php/Installing helper programs:/usr/local/php/bin/program: phpize

program: php-config

Installing man pages:/usr/local/php/php/man/man1/page: phpize.1page: php-config.1Installing PEAR environment:/usr/local/php/lib/php/[PEAR] Archive_Tar- installed: 1.4.7[PEAR] Console_Getopt- installed: 1.4.2[PEAR] Structures_Graph- installed: 1.1.1[PEAR] XML_Util- installed: 1.4.3[PEAR] PEAR- installed: 1.10.9Wrote PEAR system config file at:/usr/local/php/etc/pear.conf

You may want to add:/usr/local/php/lib/php to your php.ini include_path/usr/local/src/php-7.3.6/build/shtool install -c ext/phar/phar.phar /usr/local/php/bin

ln-s -f phar.phar /usr/local/php/bin/phar

Installing PDO headers:/usr/local/php/include/php/ext/pdo/[root@third php-7.3.6]# php -v-bash: php: command not found

[root@third php-7.3.6]# php-fpm -v-bash: php-fpm: command not found

[root@third php-7.3.6]#

ERROR: unable to bind listening socket for address ’127.0.0.1:9000′

解決辦法:

killall php-fpm

然后重啟即可。

我的PHP安裝目錄這樣重啟    /usr/local/php/sbin/php-fpm

6,安裝:

make

make install

7,關於配置:

cp php.ini-development /usr/local/php7/etc/php.ini

cp /usr/local/php7/etc/php-fpm.conf.default /usr/local/php7/etc/php-fpm.conf

cp /usr/local/php7/etc/php-fpm.d/www.conf.default /usr/local/php7/etc/php-fpm.d/www.conf

8,加個權限:

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

現在試一下,/etc/init.d/php-fpm start

如果php啟動成功了,那你很幸福;如果失敗了,接着往下看。

大概出現的是下圖這個情況吧?

再試一下運行提示的命令,出的問題是ERROR:FPM initialization failed.如下圖:

所以出問題的是php-fpm,機智如我,把我另一個虛擬機(centOS7)上的php-fpm給換上去了,只需要把php的安裝根目錄按照自己的情況改一下就成了(就是這一行:prefix=/usr/local/php)。現在我就無私的把我的php-fpm文件奉獻出來。

#! /bin/sh

### BEGIN INIT INFO

# Provides:          php-fpm

# Required-Start:    $remote_fs $network

# Required-Stop:     $remote_fs $network

# Default-Start:     2 3 4 5

# Default-Stop:      0 1 6

# Short-Description: starts php-fpm

# Description:       starts the PHP FastCGI Process Manager daemon

### END INIT INFO

prefix=/usr/local/php

exec_prefix=${prefix}

php_fpm_BIN=${exec_prefix}/sbin/php-fpm

php_fpm_CONF=${prefix}/etc/php-fpm.conf

php_fpm_PID=${prefix}/var/run/php-fpm.pid

php_opts="--fpm-config $php_fpm_CONF --pid $php_fpm_PID"

wait_for_pid () {

try=0

while test $try -lt 35 ; do

case "$1" in

'created')

if [ -f "$2" ] ; then

try=''

break

fi

;;

'removed')

if [ ! -f "$2" ] ; then

try=''

break

fi

;;

esac

echo -n .

try=`expr $try + 1`

sleep 1

done

}

case "$1" in

start)

echo -n "Starting php-fpm "

$php_fpm_BIN --daemonize $php_opts

if [ "$?" != 0 ] ; then

echo " failed"

exit 1

fi

wait_for_pid created $php_fpm_PID

if [ -n "$try" ] ; then

echo " failed"

exit 1

else

echo " done"

fi

;;

stop)

echo -n "Gracefully shutting down php-fpm "

if [ ! -r $php_fpm_PID ] ; then

echo "warning, no pid file found - php-fpm is not running ?"

exit 1

fi

kill -QUIT `cat $php_fpm_PID`

wait_for_pid removed $php_fpm_PID

if [ -n "$try" ] ; then

echo " failed. Use force-quit"

exit 1

else

echo " done"

fi

;;

status)

if [ ! -r $php_fpm_PID ] ; then

echo "php-fpm is stopped"

exit 0

fi

PID=`cat $php_fpm_PID`

if ps -p $PID | grep -q $PID; then

echo "php-fpm (pid $PID) is running..."

else

echo "php-fpm dead but pid file exists"

fi

;;

force-quit)

echo -n "Terminating php-fpm "

if [ ! -r $php_fpm_PID ] ; then

echo "warning, no pid file found - php-fpm is not running ?"

exit 1

fi

kill -TERM `cat $php_fpm_PID`

wait_for_pid removed $php_fpm_PID

if [ -n "$try" ] ; then

echo " failed"

exit 1

else

echo " done"

fi

;;

restart)

$0 stop

$0 start

;;

reload)

echo -n "Reload service php-fpm "

if [ ! -r $php_fpm_PID ] ; then

echo "warning, no pid file found - php-fpm is not running ?"

exit 1

fi

kill -USR2 `cat $php_fpm_PID`

echo " done"

;;

configtest)

$php_fpm_BIN -t

;;

*)

echo "Usage: $0 {start|stop|force-quit|restart|reload|status|configtest}"

exit 1

;;

esac

配置php到nginx

server

{

listen 80; # 端口號

server_name demo.gysr.top; # 域名

index index.html index.htm index.php;

root /web/demo.gysr.top; #j項目的入口文件夾

location ~ /.svn/ {

deny all;

}

location / {

rewrite ^/$ /index.php last;

rewrite ^/(?!index\.php|index\.html|layui|css|js|bootstrap|robots\.txt)(.*)$ /index.php/$1 last;

}

location ~ \.php {

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

include fastcgi_params;

}

location ~/uploads/.*\.(php|php5)?$ {

deny all;

}

location ~/public/.*\.(php|php5)?$ {

deny all;

}

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$

{

expires 30d;

}

location ~ .*\.(js|css)?$

{

expires 8d;

}

#access_log /www/logs/access.log main;

#

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值