php編譯安裝fileinfo,php編譯安裝模塊

本文目錄一覽:

如何在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-hk/n/156541.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-18 01:56
下一篇 2024-11-18 01:56

相關推薦

  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • 光模塊異常,SFP未認證(entityphysicalindex=6743835)——解決方案和

    如果您遇到類似optical module exception, sfp is not certified. (entityphysicalindex=6743835)的問題,那麼…

    編程 2025-04-29
  • PHP怎麼接幣

    想要在自己的網站或應用中接受比特幣等加密貨幣的支付,就需要對該加密貨幣擁有一定的了解,並使用對應的API進行開發。本文將從多個方面詳細闡述如何使用PHP接受加密貨幣的支付。 一、環…

    編程 2025-04-29
  • Python模塊下載與安裝指南

    如果想要擴展Python的功能,可以使用Python模塊來實現。但是,在使用之前,需要先下載並安裝對應的模塊。本文將從以下多個方面對Python模塊下載與安裝進行詳細的闡述,包括使…

    編程 2025-04-29
  • Python編程三劍客——模塊、包、庫

    本文主要介紹Python編程三劍客:模塊、包、庫的概念、特點、用法,以及在實際編程中的實際應用,旨在幫助讀者更好地理解和應用Python編程。 一、模塊 1、概念:Python模塊…

    編程 2025-04-29
  • 如何使用pip安裝模塊

    pip作為Python默認的包管理系統,是安裝和管理Python包的一種方式,它可以輕鬆快捷地安裝、卸載和管理Python的擴展庫、模塊等。下面從幾個方面詳細介紹pip的使用方法。…

    編程 2025-04-28
  • Python如何下載第三方模塊

    想要使Python更加強大且具備跨平台性,我們可以下載許多第三方模塊。下面將從幾個方面詳細介紹如何下載第三方模塊。 一、使用pip下載第三方模塊 pip是Python的軟件包管理器…

    編程 2025-04-28
  • Python datetime和time模塊用法介紹

    本文將詳細闡述Python datetime和time模塊的用法和應用場景,以幫助讀者更好地理解和運用這兩個模塊。 一、datetime模塊 datetime模塊提供了處理日期和時…

    編程 2025-04-28
  • Idea創建模塊時下面沒有啟動類的解決方法

    本文將從以下幾個方面對Idea創建模塊時下面沒有啟動類進行詳細闡述: 一、創建SpringBoot項目時沒有啟動類的解決方法 在使用Idea創建SpringBoot項目時,有可能會…

    編程 2025-04-28
  • 使用PHP foreach遍歷有相同屬性的值

    本篇文章將介紹如何使用PHP foreach遍歷具有相同屬性的值,並給出相應的代碼示例。 一、基礎概念 在講解如何使用PHP foreach遍歷有相同屬性的值之前,我們需要先了解幾…

    編程 2025-04-28

發表回復

登錄後才能評論