如何在linux安装php开发环境

如何在linux安装php开发环境,第1张

我一般会选用源码安装 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 命令安装,更方便快捷!

在windows平台上,主要是三个步骤:

1、下载php扩展库文件;

一般在http://pecl.php.net/ 上就有下载信息。

2、解压缩文件,将*.dll文件复制到PHP程序主目录下的“ext”或者“extension”目录。

3、打开php.ini文件,在“Dynamic Extensions”配置段中加上“extension=*.dll”,关闭文件,重新启动一下服务器就可以加载成功了。

Linux (测试环境 Ubuntu 12.04 Server X86_64)

1. 安装编译工具及所需类库

$ sudo apt-get install build-essential gcc g++ autoconf libjpeg62 libjpeg62-dev libpng12-0 libpng12-dev libfreetype6 libfreetype6-dev libxml2 libxml2-dev zlib1g zlib1g-dev bzip2 libbz2-dev openssl libssl-dev curl libcurl4-openssl-dev libpcre3 libpcre3-dev libevent-1.4-2 libevent-dev libmcrypt4 libmcrypt-dev mcrypt libltdl-dev libldap2-dev libsasl2-dev libmhash-dev libc-client2007e libc-client2007e-dev

2. 安装MySQL

$ sudo apt-get install mysql-server libmysqlclient-dev

3. 安装PHP

Linux下多版本PHP共存需要自己手工编译安装。

下载PHP源文件到/opt/src目录

$ mkdir /opt/src

$ cd /opt/src

$ wget http://museum.php.net/php5/php-5.2.17.tar.bz2 -O php-5.2.17.tar.bz2

$ wget http://cn2.php.net/get/php-5.3.28.tar.bz2/from/this/mirror -O php-5.3.28.tar.bz2

$ wget http://cn2.php.net/get/php-5.4.29.tar.bz2/from/this/mirror -O php-5.4.29.tar.bz2

$ wget http://cn2.php.net/get/php-5.5.14.tar.bz2/from/this/mirror -O php-5.5.14.tar.bz2

创建PHP各版本安装目录

$ mkdir -p /opt/php/{5217,5328,5429,5514}

安装PHP 5.2.17

$ cd /opt/src

$ tar -xvjf php-5.2.17.tar.bz2

$ cd php-5.2.17

$ sudo ln -s /usr/lib/x86_64-linux-gnu/libjpeg.so /usr/lib/libjpeg.so

$ sudo ln -s /usr/lib/x86_64-linux-gnu/libpng.so /usr/lib/libpng.so

$ sudo ln -s /usr/lib/x86_64-linux-gnu/libkrb5.so /usr/lib/libkrb5.so

$ wget -O debian_patches_disable_SSLv2_for_openssl_1_0_0.patch “https://bugs.php.net/patch-display.php?bug_id=54736&patch=debian_patches...”

$ patch -p1 <debian_patches_disable_SSLv2_for_openssl_1_0_0.patch

$ ./configure --prefix=/opt/php/5217 --with-config-file-scan-dir=/opt/php/5217/etc/php.d --with-mysql --with-pdo-mysql --with-mysqli --with-iconv-dir --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-discard-path --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-fastcgi --enable-force-cgi-redirect --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --enable-ftp --disable-debug --disable-ipv6 --disable-short-tags --enable-calendar --with-mime-magic --with-imap --with-imap-ssl --with-kerberos

$ make

$ sudo make install

$ cp php.ini-recommended /opt/php/5217/lib/php.ini

安装PHP 5.3.28

$ cd /opt/src

$ tar -xvjf php-5.3.28.tar.bz2

$ cd php-5.3.28

$ ./configure --prefix=/opt/php/5328 --with-config-file-scan-dir=/opt/php/5328/etc/php.d --with-mysql --with-pdo-mysql --with-mysqli --with-iconv-dir --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --enable-ftp --disable-debug --disable-ipv6 --disable-short-tags --enable-calendar --with-imap --with-imap-ssl --with-kerberos

$ make

$ sudo make install

$ cp php.ini-development /opt/php/5328/lib/php.ini

安装PHP 5.4.29

$ cd /opt/src

$ tar -xvjf php-5.4.29.tar.bz2

$ cd php-5.4.29

$ ./configure --prefix=/opt/php/5429 --with-config-file-scan-dir=/opt/php/5429/etc/php.d --with-mysql --with-pdo-mysql --with-mysqli --with-iconv-dir --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --enable-ftp --disable-debug --disable-ipv6 --disable-short-tags --enable-calendar --with-imap --with-imap-ssl --with-kerberos

$ make

$ sudo make install

$ cp php.ini-development /opt/php/5429/lib/php.ini

安装PHP 5.5.14

$ cd /opt/src

$ tar -xvjf php-5.5.14.tar.bz2

$ cd php-5.5.14

$ ./configure --prefix=/opt/php/5514 --with-config-file-scan-dir=/opt/php/5514/etc/php.d --with-mysql --with-pdo-mysql --with-mysqli --with-iconv-dir --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-bcmath --enable-shmop --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-zip --enable-soap --enable-ftp --disable-debug --disable-ipv6 --disable-short-tags --enable-calendar --with-imap --with-imap-ssl --with-kerberos

$ make

$ sudo make install

$ cp php.ini-development /opt/php/5514/lib/php.ini

4. 安装Apache

$ sudo apt-get install apache2

启用相应模块

$ a2enmod headers

$ a2enmod expires

$ a2enmod actions

$ a2enmod rewrite

5. 配置Apache

$ sudo vi /etc/apache2/httpd.conf

追加如下脚本映射和虚拟主机配置,原理同Windows的配置说明。

ServerName localhost

AddType application/x-httpd-php .php

ScriptAlias /php-5217/ "/opt/php/5217/bin/"

ScriptAlias /php-5328/ "/opt/php/5328/bin/"

ScriptAlias /php-5429/ "/opt/php/5429/bin/"

ScriptAlias /php-5514/ "/opt/php/5514/bin/"

<Directory /var/www/sites>

Options Indexes FollowSymLinks Includes ExecCGI

DirectoryIndex index.php index.html

AllowOverride All

Order allow,deny

Allow from all

</Directory>

<Directory /var/www/sites/5217>

Action application/x-httpd-php "/php-5217/php-cgi"

</Directory>

<Directory /var/www/sites/5328>

Action application/x-httpd-php "/php-5328/php-cgi"

</Directory>

<Directory /var/www/sites/5429>

Action application/x-httpd-php "/php-5429/php-cgi"

</Directory>

<Directory /var/www/sites/5514>

Action application/x-httpd-php "/php-5514/php-cgi"

</Directory>

# Virtualhosts

<VirtualHost *:80>

ServerAdmin webmaster@php5217.local

DocumentRoot "/var/www/sites/5217/test.local"

ServerName php5217.local

ErrorLog "/var/log/apache2/php5217.local-error.log"

CustomLog "/var/log/apache2/php5217.local-access.log" common

</VirtualHost>

<VirtualHost *:80>

ServerAdmin webmaster@php5328.local

DocumentRoot "/var/www/sites/5328/test.local"

ServerName php5328.local

ErrorLog "/var/log/apache2/php5328.local-error.log"

CustomLog "/var/log/apache2/php5328.local-access.log" common

</VirtualHost>

<VirtualHost *:80>

ServerAdmin webmaster@php5429.local

DocumentRoot "/var/www/sites/5429/test.local"

ServerName php5429.local

ErrorLog "/var/log/apache2/php5429.local-error.log"

CustomLog "/var/log/apache2/php5429.local-access.log" common

</VirtualHost>

<VirtualHost *:80>

ServerAdmin webmaster@php5514.local

DocumentRoot "/var/www/sites/5514/test.local"

ServerName php5514.local

ErrorLog "/var/log/apache2/php5514.local-error.log"

CustomLog "/var/log/apache2/php5514.local-access.log" common

</VirtualHost>

保存配置后,创建各站点的DocumentRoot目录,再往每个目录放置一个phpinfo的测试文件,完成后重启Apache服务器并在本地hosts文件加入域名解析,现在就可以访问各站点来测试多版本PHP共存了。

好了,基本的多版本PHP共存解决方案已经完成,如果还需要添加其他的PHP类库支持,后续自己再调用对应php目录下的pecl, php_config等脚本编译安装就可以了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7296688.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-04
下一篇 2023-04-04

发表评论

登录后才能评论

评论列表(0条)

保存