本文目錄一覽:
- 1、如何在linux系統下打造適合自己的PHP開發環境
- 2、如何在linux安裝php開發環境
- 3、Linux 下進行 PHP 開發,相比 Windows 環境有哪些好處
- 4、linux怎麼搭建php開發環境
- 5、在linux下編寫php有什麼好處?
如何在linux系統下打造適合自己的PHP開發環境
一、系統約定
軟體源代碼包存放位置:/usr/local/src
源碼包編譯安裝位置(prefix):/usr/local/software_name
腳本以及維護程序存放位置:/usr/local/sbin
MySQL 資料庫位置:/var/lib/MySQL(可按情況設置)
Apache 網站根目錄:/home/www/wwwroot(可按情況設置)
Apache 虛擬主機日誌根目錄:/home/www/logs(可按情況設置)
Apache 運行賬戶:www:www
二、系統環境部署及調整
1. 檢查系統是否正常
1
2
3
4
# more /var/log/messages(檢查有無系統級錯誤信息)
# dmesg(檢查硬體設備是否有錯誤信息)
# ifconfig(檢查網卡設置是否正確)
# ping (檢查網路是否正常)
2. 關閉不需要的服務
1
2
3
4
5
6
7
8
9
10
# ntsysv
以下僅列出需要啟動的服務,未列出的服務一律推薦關閉:
atd
crond
irqbalance
microcode_ctl
network
sendmail
sshd
syslog
3. 重新啟動系統
1
# init 6
4. 配置 vim
1
# vi /root/.bashrc
在 alias mv=’mv -i’ 下面添加一行:alias vi=’vim’ 保存退出。
1
# echo ‘syntax on’ /root/.vimrc
5. 使用 yum 程序安裝所需開發包(以下為標準的 RPM 包名稱)
1
2
# yum install ntp vim-enhanced gcc gcc-c++ gcc-g77 flex
bison autoconf automake bzip2-devel ncurses-devel libjpeg-devel libpng-devel libtiff-devel freetype-devel pam-devel kerne
6. 定時校正伺服器時鐘,定時與中國國家授時中心授時伺服器同步
1
# crontab -e
加入一行:
1
*/30 * * * * ntpdate 210.72.145.44
7. 源碼編譯安裝所需包 (Source)
需要下載的文件
1
2
3
4
5
6
7
gd-2.0.34.tar.gz
libxml2-2.6.30.tar.bz2
libmcrypt-2.5.8.tar.bz2
cronolog-1.7.0-beta.tar.gz
openssl-0.9.8e.tar.gz (可選)
openssl-0.9.8e.tar.gz (可選)
7.1 GD2
1
2
3
4
5
6
# cd /usr/local/src
# tar xzvf gd-2.0.34.tar.gz
# cd gd-2.0.34
# ./configure –prefix=/usr/local/gd2
# make
# make install
7.2 LibXML2
1
2
3
4
5
6
# cd /usr/local/src
# tar xjvf libxml2-2.6.30.tar.bz2
# cd libxml2-2.6.30
# ./configure –prefix=/usr/local/libxml2
# make
# make install
7.3 LibMcrypt
1
2
3
4
5
6
# cd /usr/local/src
# tar xjvf libmcrypt-2.5.8.tar.bz2
# cd libmcrypt-2.5.8
# ./configure –prefix=/usr/local/libmcrypt
# make
# make install
7.4 Apache日誌截斷程序
1
2
3
4
5
6
# cd /usr/local/src
# tar xzvf cronolog-1.7.0-beta.tar.gz
# cd cronolog-1.7.0-beta
# ./configure –prefix=/usr/local/cronolog
# make
# make install
8. 升級OpenSSL和OpenSSH
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# cd /usr/local/src
# tar xzvf openssl-0.9.8e.tar.gz
# cd openssl-0.9.8e
# ./config –prefix=/usr/local/openssl
# make
# make test
# make install
# cd ..
# tar xzvf openssh-4.7p1.tar.gz
# cd openssh-4.7p1
# ./configure \
“–prefix=/usr” \
“–with-pam” \
“–with-zlib” \
“–sysconfdir=/etc/ssh” \
“–with-ssl-dir=/usr/local/openssl” \
“–with-md5-passwords”
# make
# make install
(1)禁用 SSH V1 協議 找到:
1
#Protocol 2,1
改為:
1
Protocol 2
(2)禁止root直接登錄,此處先建立一個普通系統用戶:
1
2
# useradd username
# passwd username
找到:
1
#PermitRootLogin yes
改為:
1
PermitRootLogin no
(3)禁用伺服器端GSSAPI,找到以下兩行,並將它們注釋:
1
2
GSSAPIAuthentication yes
GSSAPICleanupCredentials yes
(4)禁用 DNS 名稱解析,找到:
1
#UseDNS yes
改為:
1
UseDNS no
(5)禁用客戶端 GSSAPI
1
# vi /etc/ssh/ssh_config
找到:
1
GSSAPIAuthentication yes
將這行注釋掉。
最後,確認修改正確後重新啟動 SSH 服務
1
2
# service sshd restart
# ssh -v
確認 OpenSSH 以及 OpenSSL 版本正確。
三、編譯安裝L.A.M.P環境
1. 下載軟體
1
# cd /usr/local/src
下載文件mysql,apache,php,請到下面網址下載相應軟體
1
2
3
(推薦版本:2.2.21)
(推薦版本:5.2.17)
2. 編譯安裝MySQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# tar xzvf MySQL-5.0.45-linux-i686-glibc23.tar.gz
# mv MySQL-5.0.45-linux-i686-glibc23 /usr/local/
# ln -s /usr/local/ MySQL-5.0.45-linux-i686-glibc23 /usr/local/MySQL
# useradd MySQL
# chown -R MySQL:root /usr/local/MySQL/
# cd /usr/local/MySQL
# ./scripts/MySQL_install_db –user=MySQL
# cp ./support-files/MySQL.server /etc/rc.d/init.d/MySQLd
# chown root:root /etc/rc.d/init.d/MySQLd
# chmod 755 /etc/rc.d/init.d/MySQLd
# chkconfig –add MySQLd
# chkconfig –level 3 5 MySQLd on
# cp ./support-files/my-huge.cnf /etc/my.cnf
# mv /usr/local/MySQL/data /var/lib/MySQL
# chown -R MySQL:MySQL /var/lib/MySQL/
# vi /etc/my.cnf
3. 編譯安裝Apache
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# cd /usr/local/src
# tar xjvf httpd-2.2.21.tar.bz2
# cd httpd-2.2.21
# ./configure \
“–prefix=/usr/local/apache2” \
“–with-included-apr” \
“–enable-so” \
“–enable-deflate=shared” \
“–enable-expires=shared” \
“–enable-rewrite=shared” \
“–enable-static-support” \
“–disable-userdir”
# make
# make install
# echo ‘/usr/local/apache2/bin/apachectl start ‘ /etc/rc.local
4. 編譯安裝PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# cd /usr/local/src
# tar xjvf php-5.2.17.tar.bz2
# cd php-5.2.17
# ./configure \
“–prefix=/usr/local/php” \
“–with-apxs2=/usr/local/apache2/bin/apxs” \
“–with-config-file-path=/usr/local/php/etc” \
“–with-MySQL=/usr/local/MySQL” \
“–with-libxml-dir=/usr/local/libxml2” \
“–with-gd=/usr/local/gd2” \
“–with-jpeg-dir” \
“–with-png-dir” \
“–with-bz2” \
“–with-freetype-dir” \
“–with-iconv-dir” \
“–with-zlib-dir ” \
“–with-openssl=/usr/local/openssl” \
“–with-mcrypt=/usr/local/libmcrypt” \
“–enable-soap” \
“–enable-gd-native-ttf” \
“–enable-ftp” \
“–enable-mbstring” \
“–enable-exif” \
“–disable-ipv6” \
“–disable-cgi” \
“–disable-cli”
# make
# make install
# mkdir /usr/local/php/etc
# cp php.ini-dist /usr/local/php/etc/php.ini
5. 整合Apache與PHPP
1
# vi /usr/local/apache2/conf/httpd.conf
找到:
1
AddType application/x-gzip .gz .tgz
在該行下面添加
1
AddType application/x-httpd-php .php
找到:
1
DirectoryIndex index.html
將該行改為
1
DirectoryIndex index.html index.htm index.php
找到:
1
2
3
4
#Include conf/extra/httpd-mpm.conf
#Include conf/extra/httpd-info.conf
#Include conf/extra/httpd-vhosts.conf
#Include conf/extra/httpd-default.conf
去掉前面的「#」號,取消注釋。注意:以上 4 個擴展配置文件中的設置請按照相關原則進行合理配置!修改完成後保存退出。
1
# /usr/local/apache2/bin/apachectl restart
6. 查看確認L.A.M.P環境信息、提升 PHP 安全性
在網站根目錄放置 phpinfo.php 腳本,檢查phpinfo中的各項信息是否正確。
確認 PHP 能夠正常工作後,在 php.ini 中進行設置提升 PHP 安全性。
1
# vi /etc/php.ini
找到:
1
disable_functions =
設置為:
1
2
phpinfo,passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,
ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server
如何在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 命令安裝,更方便快捷!
Linux 下進行 PHP 開發,相比 Windows 環境有哪些好處
1.招人成本問題 不是每一個人都非常熟練LINUX下環境.招這樣的人 你得開多少工資.
2.人力培訓問題 好吧,你說招個不會的人,來培訓成LINUX下開發,總的有人教,有人帶吧?再者萬一別人實在不習慣,試用期跑路了怎麼辦?
3.各種擴展問題 除了很冷門的庫,基本上都有WIN版..就算沒WIN版.能部署到測試環境..開發環境connect到測試環境也可以解決啊?(我們的REDIS,SPHINX就是這樣乾的).
linux怎麼搭建php開發環境
一、安裝Apache2.2.22
1、到官網下載
2、解壓
tar -zxvf httpd-2.2.22.tar.gz
3、建立目標文件夾(注意以下所有操作都時在root用戶下執行的)
mkdir /usr/local/apache2
也就是說等下安裝的apache2要安裝到這個文件夾裡面
4、配置
回到原來解壓之後產生的文件夾
./configure –prefix=/usr/local/apache2 –enable-module=shared
要加上後面的參數,否則無法使用php,-enable-module=shared表示Apache可以動態的載入模塊
這一步,出現了很多問題:
第一個錯誤為:
checking for APR… no
configure: error: APR not found. Please read the documentation.
解決方法:
download the latest versions of both APR and APR-Util from Apache APR, unpack them into ./srclib/apr and ./srclib/apr-util (be sure the domain names do not have version numbers; for example, the APR distribution must be under ./srclib/apr/)
then do
./configure –with-included-apr
原文章地址:
另外一種解決方法為:
分別安裝APR和APR-util,安裝方法為:首先下載這兩個文件,然後解壓,進入解壓後目錄,然後把APR和APR-util分別安裝到/usr/local/文件夾的apr和apr-util文件夾下。APR的具體安裝方法為:
[root@localhost 52lamp]# tar -zxvf apr-1.4.2.tar.gz //unzip -o apr-1.4.2.zip
[root@localhost 52lamp]# cd apr-1.4.2
[root@localhost apr-1.4.2]# ./configure –prefix=/usr/local/apr
[root@localhost apr-1.4.2]# make
[root@localhost apr-1.4.2]# make install
安裝Apr-util 在./confiure –prefix=/usr/local/apr-util –with-apr=/usr/local/apr
其他步驟類似。
第二個錯誤為:no acceptable C compiler found in $Path
直接運行 yum install gcc,安裝Gcc即可
第三個問題為:pcre-config for libpcre not found
解決方法就是 下載prce安裝包,和APR類似,安裝到/usr/local/pcre文件夾下面即可。PS:fedora下安裝c++編譯器g++的命令為:yum install gcc-c++ 。
5、編譯
make
6、安裝
make install
7、啟動,重啟和停止 ,先切換到安裝完成後的目錄/usr/local/apache2/bin
./apachectl -k start
./apachectl -k restart
./apachectl -k stop
8、配置文件(滿足最基本的配置)
編輯 /usr/local/apache2/conf/httpd.conf 文件
找到:
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
在後面添加:
AddType application/x-httpd-php .php(使Apcche支持PHP)
AddType application/x-httpd-php-source .php5
找到:
IfModule dir_module
DirectoryIndex index.html
/IfModule
添加:
IfModule dir_module
DirectoryIndex index.html index.php
/IfModule
找到:
#ServerName
修改為:
ServerName 127.0.0.1:80或者ServerName localhost:80
記得要去掉前面的「#」
9、測試
在瀏覽器里輸入
如果出現It Works!說明成功。這是我的測試結果:O(∩_∩)O哈哈~
10、修改默認的Web站點目錄
默認的目錄為 “/usr/local/apache2/htdocs”,修改apache的配置文件httpd.conf,比如在新建一個 /home/gyw/WebSite的目錄作為apache的站點目錄
找到DocumentRoot這一行修改為:DocumentRoot “/home/gyw/WebSite”
找到 Directory 這一行修改為:Directory “/home/gyw/WebSite”
測試:修改到文件夾出現錯誤:
「You don’t have permission to access /index.html on this server.」
解決方法:
更改文件許可權;chmod 755 index.html
打開apache配置文件httpd.conf,找到這麼一段:
Directory /
Options FollowSymLinks
AllowOverride None
Order deny,allow
deny from all
Satisfy all
/Directory
測試結果如下:
二、安裝PHP
1、 下載
2、解壓
tar -zxvf php-5.3.16.tar.gz
3、建立目標文件夾
mkdir /usr/local/php
也就是說等下安裝的php要安裝到這個文件夾裡面
4、配置
回到原來解壓後的文件夾
./configure –prefix=/usr/local/php –with-apxs2=/usr/local/apache/bin/apxs
注意這裡有一個-with-apxs2=/usr/local/apache/bin/apxs選項,其中apxs是在安裝Apache時產生的,apxs是一個為Apache HTTP伺服器編譯和安裝擴展模塊的工具,使之可以用由mod_so提供的LoadModule指令在運行時載入到Apache伺服器中。我的理解是通過這個工具把PHP模塊動態載入到Apache中
出現錯誤:configure: error: xml2-config not found. Please check your libxml2 installation.
運行yum install libxml2,然後再運行yum install libxml2-devel安裝完畢後,重新運行上面的./configure命令。
5、編譯
make
6、測試編譯
make test
7、安裝
make install
8、配置文件
cp /usr/local/src/php-5.3.16/php.ini-development /usr/local/php/lib/php.ini
把原來位於源代碼裡面的php.ini-development拷貝到/usr/local/php/lib/php.ini下,並且重命名為php.ini
9.重啟apache
10、測試
在apache的htdocs下建立一個php文件test.php,裡面的內容如下:
?php
phpinfo();
?
然後在瀏覽器里輸入
如果出現php的相關配置,成功,如果什麼都沒有輸入,說明失敗,重新以上步驟或者查找原因
如果決定在安裝後改變配置選項,只需重複最後的三步configure, make, 以及 make install,然後需要重新啟動 Apache 使新模塊生效。Apache不需要重新編譯。
測試結果如下圖:
三、安裝MySql
1、下載
到官網下載mysql-5.1.65.tar.gz(注意是源碼包)
2、解壓
tar -zxvf mysql-5.1.65.tar.gz
3、建立目標文件夾
mkdir /usr/local/mysql
也就是說等下安裝的mysql要安裝到這個文件夾裡面
4、配置
./configure –prefix=/usr/local/mysql/
在./configure時出現錯誤:error: No curses/termcap library found
下載安裝相應軟體包
yum list|grep ncurses
yum -y install ncurses-devel
yum install ncurses-devel
5、編譯
make
6、安裝
make install
7、啟動
MySQL服務並不會自動啟動,還需要先初始化MySQL資料庫,操作如下:
cd /usr/local/mysql/bin
sudo ./mysql_install_db –user=root
注意,這裡最後的root是指可以操作資料庫的用戶,可以是當前用戶,也可以新建用戶,與linux上的root用戶是兩回事,可以自己取一個名字
./mysqld_safe –user=root 這條命令負責啟動mysql服務的守護進程,此外最後的時必須的,因為希望守護進程在後台運行
這裡的root就是剛才的那個
8、為根用戶創建密碼
./mysqladmin -u root password 『123456』
如果root已經設置過密碼,採用如下方法
./mysqladmin -u root password oldpass 『123456』
9、測試
mysql -u root -p
會提示輸入密碼,就用剛才設置的密碼
123456
如果出現mysql,說明連接成功了,下面通過命令 創建一個資料庫、建一個表,增加一條記錄,為後面的測試準備
mysql create database gywtest;
mysql use gywtest;
mysql create table student(id int(4) not null primary key auto_increment,stuname char(20));
mysql insert into student(stuname) values(‘Tom’);
注意每條命令後面有個分號,如果上面的都成功,後面就可以用這個測試。
四、將PHP與MySql結合起來
1、重新配置PHP,改變配置選項,只需重複PHP安裝時的最後的三步configure, make, 以及 make install,然後需要重新啟動 Apache 使新模塊生效,Apache不需要重新編譯。
2、配置
./configure –prefix=/usr/local/php –with-apxs2=/usr/local/apache2/bin/apxs –with-mysqli=/usr/local/mysql/bin/mysql_config 注意mysql_config 的路徑
3、編譯 make
4、安裝 make installe
5、測試 寫一個頁面test.php,放在apache的web目錄下,測試上面用命令創建的資料庫
?php
$mysqli=new mysqli();
$mysqli-connect(‘localhost’,’root’,’123456′,’gywtest’);
// 創建查詢
$sqlstr=’select * from student’;
//發送查詢給MySql
$result=$mysqli-query($sqlstr);
while($row=$result-fetch_object())
{
$name=$row-stuname;
echo $name;
}
?
Fatal error: Class ‘mysqli’ not found in /home/lufangtao/Project/DB.php on line 3
解決方法:
/usr/local/php/bin/phpize 這裡回車運行
出錯:
Cannot find config.m4.
Make sure that you run ‘./phpize’ in the top level source directory of the module
解決方法:
PHP源碼包文件夾下的EXT文件夾就是放置著目前版本的可用擴展,CD進去看看都有哪些你需要的?應該看到mysqli文件夾了吧~~~
在當前目錄下執行phpize
[root@localhost mysqli]#/usr/local/php/bin/phpize
Configuring for:
PHP Api Version: 20090626
Zend Modeule Api No: 20090626
Zend Extension Api No: 220090626
Cannot find autoconf. Please check your autoconf installation and the
$PHP_AUTOCONF environment variable. Then, rerun this script.
解決方法:
yum install autoconf再次運行上面的命令即可。
[root@localhost mysqli]#./configure –prefix=/opt/mysqli –with-php-config=/opt/php/bin/php-config –with-mysqli=/opt/mysql/bin/mysql_config
[root@localhost mysqli]#make
[root@localhost mysqli]#make install
安裝完成後會有提示擴展所在目錄路徑,如:
/opt/php/lib/php/extensions/no-debug-zts-20090626php
所需的mysqli.so便會在此目錄下,接下來修改/opt/php/etc/下的php.ini文件,加入mysqli擴展,即加入如下一行:
extension=/opt/php/lib/php/extensions/no-debug-zts-20090626/mysqli.so
這裡還是回出現錯誤:
參考博客
解決不用擴展連接MySQL的方法。
最終還是沒有解決MySQLi連接的問題,但是可以使用MySQL資料庫了,下面是測試程序
?php
$link=mysql_connect(‘localhost’,’root’,’123456′);
if(!$link) echo “F!”;
else echo “S!”;
mysql_select_db(“students”) or die(“Could not select database”);
$query=”SELECT * FROM student;”;
$result=mysql_query($query) or die(“Query failed”);
print “table\n”;
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
print “\ttr\n”;
foreach ($line as $col_value) {
print “\t\ttd$col_value/td\n”;
}
print “\t/tr\n”; }
print “/table\n”;
/* 釋放資源 */
mysql_free_result($result);
mysql_close();
?
~
在linux下編寫php有什麼好處?
主要好處:
編輯器不會有格式不統一問題。
linux下配置lamp環境非常方便(當然,windows下也可以直接安裝wamp這種軟體,但linux下使用起來更方便)
linux平台下有很多開發工具,比如git(若在windows下啟用terminal還是有點小麻煩)等等。
不會hold不住誘惑,linux平台下遊戲相對少,更容易專註編程。
補充:
其實,如果自己能堅持,在windows平台下也可以寫好程序。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/247263.html