本文目錄一覽:
- 1、如何在linux安裝php開發環境
- 2、如何在openSUSE42.1下編譯安裝PHP7
- 3、編譯PHP提示出錯找不到libc-client.無法編譯PHP怎麼辦
- 4、php5.5怎樣啟用php_fileinfo支持?
如何在linux安裝php開發環境
我一般會選用源碼安裝 php,安裝 php 的過程指定要安裝的擴展,但是避免不了缺少某個擴展未安裝導致程序運行報錯的問題。以 fileinfo 為例,介紹一下怎麼添加 php 擴展。
1. 準備
通常遇到報錯:xxx function undefined,而這個函數是系統函數的話,那一定是你缺少某個擴展。添加擴展也非常簡單。首選要確認當前的 php 是哪個版本,不同版本的 php 擴展會有些許出入。然後找到 Php 源碼目錄,也就是從網上下載下來並且解壓的 php 文件包。添加擴展的時候需要在源碼包裡面去執行命令。
2. 安裝 fileinfo 擴展
1. 確認 php 版本
php -v
# PHP 7.4.4 (cli)
2. 找到 php 可執行文件的位置
whereis php
# php: /usr/local/php /usr/local/php/bin/php
可以看出 php 執行文件在 /usr/local/php/bin 目錄裡面
那麼嘗試執行 phpize,保證這個文件存在,phpize 命令在添加擴展的時候需要用到
/usr/local/php/bin/phpize -v
# Configuring for:
# PHP Api Version: 20190902
# Zend Module Api No: 20190902
# Zend Extension Api No: 320190902
3.進入php源碼目錄
我的習慣是網絡下載的軟件會放在 /usr/local/src 下面,
cd /usr/local/src/php-7.4.4
cd /etc
cd fileinfo
擴展都在源碼目錄的 etc 下面,裡面有 curl,gd,ftp 等等擴展目錄,我要安裝 fileinfo,所以到 fileinfo 目錄裡面
4.開始安裝
確定目錄下面有 config.m4 文件,如果沒有,應該會有 config0.m4 文件,把 config0.m4 複製一份為 config.m4,如果沒有這個文件,會報錯:can not found config.m4
/usr/local/php/bin/phpize
./configure
make make install
如果這幾行命令運行下來都沒有報錯,那麼說明擴展文件已經生成,並且已經自動移入相應位置。接下來就是修改 php.ini,追加 extension=fileinfo.so 到 php.ini 中。
5.修改php.ini,加載擴展文件
查看 php.ini 的位置
php -i | grep php.ini
#Configuration File (php.ini) Path = /usr/local/php/etc
#Loaded Configuration File = /usr/local/php/etc/php.ini
可以看到 php.ini 的位置: /usr/local/php/etc/php.ini
vim /usr/local/php/etc/php.ini
#添加extension=fileinfo.so,保存
php -m | grep fileinfo
#fileinfo
看到輸出 fileinfo,至此,fileinfo 擴展安裝完畢!另外可以使用 pecl 命令安裝,更方便快捷!
如何在openSUSE42.1下編譯安裝PHP7
首先推薦一篇文章
PHP
7
Release
Date
Arrived:
Will
Developers
Adopt
PHP
7?
–
PHP
Classes
blog
。
裡面說到是否會去使用PHP7,就個人而言,我是毫不猶豫地使用的,但是生產環境就不是我說了算,所以只能自己在自己的開發環境里更新PHP的版本。那麼,你呢?
筆者使用的是Linux的openSUSE42.1發行版,Yast裡面還沒有PHP7的安裝包,於是乎只能自己手動編譯安裝了。作為一個PHP開發者,我是非常希望能夠學會編譯安裝PHP7的,之前試過幾次,但是每次安裝都要上網找各種資料,於是乎,這次安裝成功後就想把自己的安裝過程以及遇到的問題記錄下來,方便以後查閱和分享給需要的人。
下載源碼並解壓
進入正題,要編譯安裝PHP7,首先當然要下載PHP7的源碼。你可以到
github
上clone,也可以到
PHP官網
下載。下載後解壓到
/usr/local/src
目錄,並將目錄重命名為php7。進入目錄。
配置編譯參數
生成配置文件
./buildconf
配置
./configure
\
–prefix=/usr/local/php7
\
–exec-prefix=/usr/local/php7
\
–bindir=/usr/local/php7/bin
\
–sbindir=/usr/local/php7/sbin
\
–includedir=/usr/local/php7/include
\
–libdir=/usr/local/php7/lib/php
\
–mandir=/usr/local/php7/php/man
\
–with-config-file-path=/usr/local/php7/etc
\
–with-mysql-sock=/var/run/mysql/mysql.sock
\
–with-mcrypt=/usr/include
\
–with-mhash
\
–with-openssl
\
–with-mysqli=shared,mysqlnd
\
–with-pdo-mysql=shared,mysqlnd
\
–with-gd
\
–with-iconv
\
–with-zlib
\
–enable-zip
\
–enable-inline-optimization
\
–disable-debug
\
–disable-rpath
\
–enable-shared
\
–enable-xml
\
–enable-bcmath
\
–enable-shmop
\
–enable-sysvsem
\
–enable-mbregex
\
–enable-mbstring
\
–enable-ftp
\
–enable-gd-native-ttf
\
–enable-pcntl
\
–enable-sockets
\
–with-xmlrpc
\
–enable-soap
\
–without-pear
\
–with-gettext
\
–enable-session
\
–with-curl
\
–with-jpeg-dir
\
–with-freetype-dir
\
–enable-opcache
\
–enable-fpm
\
–disable-cgi
\
–with-fpm-user=nginx
\
–with-fpm-group=nginx
\
–without-gdbm
\
–disable-fileinfo
參數說明
prefix
PHP7安裝的根目錄
with-config-file-path
PHP7的配置文件目錄
執行完上面的配置命令後的結果如下圖所示:
執行上面命令的過程中會遇到一些依賴缺少的提示,下面列出我遇到的依賴問題:
錯誤:
configure:
error:
xml2-config
not
found.
Please
check
your
libxml2
installation.
解決:
zypper
install
libxml2-devel
錯誤:
configure:
WARNING:
unrecognized
options:
–with-mysql
解決:
取消這個選項,這個選項是不存在的
錯誤:
configure:
error:
jpeglib.h
not
found.
解決:
zypper
install
libjpeg-devel
錯誤:
configure:
error:
mcrypt.h
not
found.
Please
reinstall
libmcrypt.
解決:
zypper
install
libmcrypt-devel
錯誤:
checking
for
recode
support…
yes
configure:
error:
Can
not
find
recode.h
anywhere
under
/usr
/usr/local
/usr
/opt.
解決:
zypper
install
librecode-devel
總的來說,在配置的時候遇到沒有的就打開Yast搜一下,如果有的話就安裝,然後重新編譯看還需要那些,如果在Yast找不到,那就上網找一下Google。
編譯和安裝PHP7
make
make
install
其中,make之後可以選擇make
test。只是一個可選步驟,不執行不知道有什麼問題,不過筆者暫時還沒遇到。
查看安裝成功後的PHP7目錄
編譯安裝成功後,查看PHP7的安裝目錄`ls
/usr/local/php7`:
設置PHP7的配置文件
cp
/usr/local/src/php7/php.ini-production
/usr/local/php7/etc/php.ini
cp
/usr/local/src/sapi/fpm/init.d.php-fpm
/etc/init.d/php-fpm
cp
/usr/local/php7/etc/php-fpm.conf.default
/usr/local/php7/etc/php-fpm.conf
cp
/usr/local/php7/etc/php-fpm.d/
/usr/local/php7/etc/php-fpm.d/
設置環境變量
在/etc/profile
文件的最後一行加上
export
PATH=/usr/local/php7/bin:/usr/local/php7/sbin:$PATH
然後執行
source
/etc/profile
設置PHP日誌目錄和php-fpm進程文件(php-fpm.sock)目錄
mkdir
-p
/var/log/php-fpm/
mkdir
-p
/var/run/php-fpm
cd
/var/run/
chown
-R
nginx:nginx
php-fpm
將PHP設置為開機啟動
chmod
+x
/etc/init.d/php-fpm
chkconfig
php-fpm
on
可以用chkconfig命令查看開機啟動服務列表。
啟動PHP服務
service
php-fpm
start
通過ps
aux
|
grep
‘php’查看PHP是否啟動成功
至此,PHP7就安裝成功了,你也開始使用PHP7吧!
編譯PHP提示出錯找不到libc-client.無法編譯PHP怎麼辦
I. 安裝devel庫
yum install pam-devel libc-client libc-client-devel -y
如果使用了yum安裝了libc-client,那麼在以後編譯參數–with-imap=/usr/local/php-imap中的路徑應該刪除,即–with-imap。
如果這樣還不能解決,那麼就需要手動編譯imap2007f了!
II. 手動編譯imap2007f
腳本取自 forum.directadmin.com/showthread.php?t=45434
在/usr/src目錄下運行以下腳本,將會在/usr/local/php-imap目錄下生成imap需要的庫
#!/bin/sh
# Script for PHP-IMAP installation. 0.1b
# Written by Martynas Bendorius (smtalk)
CWD=`pwd`
OS=`uname`
#Is it a 64-bit OS?
B64=0
B64COUNT=`uname -m | grep -c 64`
if [ “$B64COUNT” -eq 1 ]; then
B64=1
LD_LIBRARY_PATH=/lib64:/usr/lib64:/usr/local/lib64:/lib:/usr/lib:/usr/local/lib
export LD_LIBRARY_PATH
fi
if [ ! -e /usr/include/krb5.h ] [ -e /etc/redhat-release ]; then
echo “Installing krb5-devel”
yum -y install krb5-devel
fi
VERSION=2007f
PROTOCOL=ftp
URL=”${PROTOCOL}://{VERSION}.tar.Z”
FILENAME=imap-${VERSION}
TARBALL=${FILENAME}.tar.Z
echo “Downloading ${TARBALL}…”
wget -O ${TARBALL} ${URL}
tar xzf ${TARBALL}
cd ${FILENAME}
echo “Installing ${FILENAME}…”
if [ ${OS} = “FreeBSD” ]; then
if [ ${B64} -eq 0 ]; then
make bsf
else
make bsf EXTRACFLAGS=-fPIC
fi
else
perl -pi -e ‘s#SSLDIR=/usr/local/ssl#SSLDIR=/etc/pki/tls#’ src/osdep/unix/Makefile
perl -pi -e ‘s#SSLINCLUDE=\$\(SSLDIR\)/include#SSLINCLUDE=/usr/include/openssl#’ src/osdep/unix/Makefile
perl -pi -e ‘s#SSLLIB=\$\(SSLDIR\)/lib#SSLLIB=/usr/lib/openssl#’ src/osdep/unix/Makefile
if [ ${B64} -eq 0 ]; then
make slx
else
make slx EXTRACFLAGS=-fPIC
fi
fi
echo “Copying files to /usr/local/php-imap”
mkdir -p /usr/local/php-imap/include
mkdir -p /usr/local/php-imap/lib
chmod -R 077 /usr/local/php-imap
cp -f c-client/*.h /usr/local/php-imap/include/
cp -f c-client/*.c /usr/local/php-imap/lib/
cp -f c-client/c-client.a /usr/local/php-imap/lib/libc-client.a
cd ..
rm -rf ${FILENAME}
if [ -d /usr/lib/x86_64-linux-gnu ] [ ! -d /usr/kerberos/lib ]; then
mkdir -p /usr/kerberos
ln -s /usr/lib/x86_64-linux-gnu /usr/kerberos/lib
fi
exit 0;
III. 開始編譯
下面是編譯PHP的參數,如果出現問題,請參考編譯PHP5.6 和 PHP編譯錯誤的解決辦法。
./configure –prefix=/usr/local/php –with-pdo-pgsql –with-zlib-dir –with-freetype-dir –enable-mbstring –with-libxml-dir=/usr –enable-soap –enable-calendar –with-curl –with-mcrypt –with-zlib –with-gd –with-pgsql –disable-rpath –enable-inline-optimization –with-bz2 –with-zlib –enable-sockets –enable-sysvsem –enable-sysvshm –enable-pcntl –enable-mbregex –enable-exif –enable-bcmath –with-mhash –enable-zip –with-pcre-regex –with-mysql –with-pdo-mysql –with-mysqli –with-jpeg-dir=/usr –with-png-dir=/usr –enable-gd-native-ttf –with-openssl –enable-ftp –with-imap=/usr/local/php-imap –with-imap-ssl –with-kerberos –with-gettext –with-xmlrpc –with-xsl –enable-opcache –enable-fpm –with-fpm-user=www –with-fpm-group=www –disable-fileinfo
IV. 其他問題
在本次編譯中,老高又遇到了幾個怪事
set –enable-opcache=no
configure: error: Don’t know how to define struct flock on this system, set –enable-opcache=no
這個問題還是庫文件的鏈接問題
解決:
echo /usr/local/lib /etc/ld.so.conf.d/local.conf
ldconfig -v
讓編譯的PHP支持memcache
php5.5怎樣啟用php_fileinfo支持?
fileinfo 是php的一個擴展,你需要在安裝時候查看是否有這個擴展包,如果有,那就在php.ini寫 extension=php_fileinfo.dll 就可以了,如果有這一行,就刪除前面的分號。
PHP 是一種在服務器端執行,嵌入到HTML文檔的腳本語言,早期的風格類似於C語言與Perl語言,被廣泛的運用於網絡開發中。PHP6是下一代PHP版本,主要特性為支持Unicode標準。2015年6月11日,PHP官網發布消息,正式公開發布PHP7第一版的alpha版本。
《PHP 5.5從零開始學(視頻教學版)》循序漸進地介紹了PHP 5.5開發動態網站的主要知識和技能,提供了大量的PHPPHP應用實例供讀者買踐。每一章節都清晰講述了代碼作用及其編寫思路,使讀者能在最短時間內迅速掌握PHP的應用開發技能。全書共22章,分別介紹了PHP 5.5的基本概念、PHP服務器環境配置、PHP的基本語法、PHP的語言結構、字符串和正則表達式、數組、時間和日期、面向對象、錯誤處理和異常處理、PHP與Web頁面交互、文件與目錄操作、圖形圖像處理、Cookie與會話管理、MySQL數據庫基礎、PHP操作MySQL數據庫、PDO數據庫抽象類庫、PHP與JavaScript綜合應用、PHP與XML技術的綜合應用、PHP與Ajax的綜合應用、Smarty模版、Zend framework框架等,最後通過一個PHP+MySQL數據庫的綜合案例,使讀者進一步鞏固所學的知識,提高綜合實戰能力。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/156541.html