再次整理
//一下配置在命令粘貼時注意句尾加 \ , 在 \ 后不能有空格,不然會自動執行,相當於回車
./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;
#
}