LAMP第三部分php,mysql配置php
php配置html
1、禁用函數設置mysql
一、查找php配置文件的命令,在不知道配置文件的狀況下使用linux
[root@mysql ~]#/usr/local/php/bin/php -i |head phpinfo() PHP Version => 5.3.28 System => Linux mysql 2.6.32-504.16.2.el6.x86_64 #1 SMP Wed Apr 22 06:48:29 UTC 2015 x86_64 Build Date => Jun 12 2015 23:45:07 Configure Command => './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' '--with-gd' '--with-jpeg-dir' '--with-png-dir' '--with-freetype-dir' '--with-iconv-dir' '--with-zlib-dir' '--with-bz2' '--with-openssl' '--with-mcrypt' '--enable-soap' '--enable-gd-native-ttf' '--enable-mbstring' '--enable-sockets' '--enable-exif' '--disable-ipv6' Server API => Command Line Interface Virtual Directory Support => disabled Configuration File (php.ini) Path => /usr/local/php/etc Loaded Configuration File => /usr/local/php/etc/php.ini
二、在Windows瀏覽器中查看php配置文件,須要在網站的根目錄下建立一個phpinfo.php腳本,這個更準確一些web
進入網站根目錄sql
[root@mysql ~]# cd /data/www/shell
建立phpinfo.php腳本apache
[root@mysql www]# vim phpinfo.phpvim
腳本內容:瀏覽器
<?php phpinfo(); ?>
在web瀏覽器中訪問
地址:http://www.guhantai.com.cn/phpinfo.php
2、配置disable_function
disable_function:禁用函數的意思
配置文件路徑:/usr/local/php/etc/php.ini,把下面的函數寫在disable_functions = 的後面,如圖:
禁用函數以下:
eval,assert,popen,passthru,escapeshellarg,escapeshellcmd,passthru,exec,system,chroot,scandir,chgrp,chown,escapeshellcmd,escapeshellarg,shell_exec,proc_get_status,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,leak,popepassthru,stream_socket_server,popen,proc_open,proc_close
其中,shell_exec必定要寫,這是個最危險的函數
3、退出保存,要重啓apache服務,否則不會生效
[root@mysql ~]# /usr/local/apache2/bin/apachectl restart
4、php的配置有錯誤,Apache也不會檢測出來,因此不使用檢測命令
2、配置error_log(錯誤日誌)
也是在/usr/local/php/etc/php.ini配置文件下,
1、display_error=off #關閉日誌提醒,這樣子作是爲了安全
2、log_errors=on #開始錯誤日誌記錄功能,默認是開啓的
3、error_log=/usr/local/php/logs/error.log
定義錯誤日子的存放路徑,/usr/local/php/logs/error.log就死存放路徑,最好寫絕對路徑,由於相對路徑有可能不識別
注意要建立如下日誌目錄,否則沒法生成日誌
建立目錄:mkdir /usr/local/hph/logs
查看Apache 服務帳號
[root@mysql ~]# ps aux |grep httpd root 1232 0.0 1.0 279576 10956 ? Ss 01:46 0:18 /usr/local/apache2/bin/httpd -k start root 1711 0.0 0.4 143536 4472 ? S 09:18 0:00 vim /usr/local/apache2/conf/extra/httpd-vhosts.conf daemon 1969 0.0 0.6 279576 6216 ? S 22:02 0:00 /usr/local/apache2/bin/httpd -k start daemon 1970 0.0 0.6 279576 6216 ? S 22:02 0:00 /usr
受權daemon帳號能夠對logs目錄進行讀寫權限
chmod 777 /usr/local/php/logs
若是由於某些狀況不能自動建立,那麼須要手動建立一個錯誤日誌,而且受權
建立:touch /usr/local/php/logs/error.log
受權:chmod 777 /usr/local/php/logs/error.log
4、日誌級別
error_reporting = E_ALL | E_STRICT:會記錄咱們所須要的日誌了,應該是說,知足咱們所須要的錯誤信息了
5、錯誤級別參考:
; E_ALL 全部錯誤和警告(除E_STRICT外)
; E_ERROR 致命的錯誤。腳本的執行被暫停。
; E_RECOVERABLE_ERROR 大多數的致命錯誤。
; E_WARNING 非致命的運行時錯誤,只是警告,腳本的執行不會中止。
; E_PARSE 編譯時解析錯誤,解析錯誤應該只由分析器生成。
; E_NOTICE 腳本運行時產生的提醒(每每是咱們寫的腳本里面的一些bug,好比某個變量沒有定義),這個錯誤不會致使任務中斷。
; E_STRICT 腳本運行時產生的提醒信息,會包含一些php拋出的讓咱們要如何修改的建議信息。
; E_CORE_ERROR 在php啓動後發生的致命性錯誤
; E_CORE_WARNING 在php啓動後發生的非致命性錯誤,也就是警告信息
; E_COMPILE_ERROR php編譯時產生的致命性錯誤
; E_COMPILE_WARNING php編譯時產生的警告信息
; E_USER_ERROR 用戶生成的錯誤
; E_USER_WARNING 用戶生成的警告
; E_USER_NOTICE 用戶生成的提醒
& 表示而且
~ 表示非
| 表示或者
參考文檔:http://www.aminglinux.com/bbs/thread-6973-1-1.html
3、 配置open_basedir
做用:將用戶可操做的文件限制在某目錄下
1、修改/usr/local/php/etc/php.ini 配置文件
open_basedir默認是關閉的,如圖:
去掉註釋,啓用而且修改:
/data/www/:寫的是網站的根目錄,就是把用戶的權限限制在此目錄
而後重啓apache服務
[root@mysql ~]# /usr/local/apache2/bin/apachectl restart
2、若是有多個網站時,須要在/usr/local/apache2/conf/extra/httpd-vhosts.conf文件中修改配置
以下圖所示:
只須要在每一個虛擬機配置中增長這一條命令就能夠:
php_admin_value open_basedir "/dir1/:/dir2/"
"/dir1/:/dir2/:網站目錄
配置完成以後須要檢測apache的配置文件是否正確
[root@mysql ~]# /usr/local/apache2/bin/apachectl -t Warning: DocumentRoot [/tmp/tmp] does not exist Syntax OK
Warning: DocumentRoot [/tmp/tmp] does not exist
這個錯誤信息是提示我沒有/tmp/tmp/目目錄,由於我只有一個網站,因此不可能有這個目錄的,
這裏只是演示了一下,若是有多個網站時改怎麼處理
重啓apache服務
[root@mysql ~]# /usr/local/apache2/bin/apachectl restart
4、安裝php的擴展模塊(memcache)
1、把全部的源碼包都下載到/usr/loacal/src
[root@mysql ~]# cd /usr/local/src/
2、下載源 memcache碼包
[root@mysql src]# wget http://www.lishiming.net/data/p_w_upload/forum/memcache-2.2.3.tgz
3、解壓 memcache
[root@mysql src]# tar zxvf memcache-2.2.3.tgz
4、進入到源碼包
[root@mysql src]# cd memcache-2.2.3
5、memcache-2.2.3目錄下你沒有configure文件,須要生成文件
[root@mysql memcache-2.2.3]# /usr/local/php/bin/phpize
生成文件以後,查看並無configure文件,檢查是發現提示未安裝autocon,如圖
安裝autocon
[root@mysql ~]# yum install autoconf
再生成文件
[root@mysql memcache-2.2.3]# /usr/local/php/bin/phpize
使用ls查看
6、編譯文件
./configure --with-php-config=/usr/local/php/bin/php-config
[root@mysql memcache-2.2.3]# ./configure --with-php-config=/usr/local/php/bin/php-config
7、編譯
make
[root@mysql memcache-2.2.3]# make
make install
[root@mysql memcache-2.2.3]# make install
8、用ls查看ls /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/時會多出一個文件來
[root@mysql memcache-2.2.3]# ls /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/
memcache.so
9、 memcache.so文件的用法:去編輯/usr/local/php/etc/php.ini配置文件
[root@mysql memcache-2.2.3]# vim /usr/local/php/etc/php.ini
在/usr/local/php/etc/php.ini文件的末尾寫上一下一行:
extension = memcache.so
如圖:
而後退出保存
查看php是否有加載剛纔的模塊,若是就成功了
[root@mysql memcache-2.2.3]# /usr/local/php/bin/php -m
10、若是不知道模塊在哪裏,須要使用一下命令來查找模塊的路徑
/usr/local/php/bin/php -i |grep -i extension_dir
[root@mysql memcache-2.2.3]# /usr/local/php/bin/php -i |grep -i extension_dir extension_dir => /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626 => /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626 PHP Warning: Unknown: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Asia/Chongqing' for 'CST/8.0/no DST' instead in Unknown on line 0 sqlite3.extension_dir => no value => no value
或者在編輯配置文件的時候可與寫上絕對路徑,這樣子就不容易出錯
extension = /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/memcache.so
在瀏覽器中輸入http://www.guhantai.com.cn/phpinfo.php 訪問時就會看到memcache模塊的
Phpinfo.php:是以前建立的一個,可與看上一篇筆記,當中有記錄
mysql配置(部分經常使用的參數)
mysql配置文件路徑:/etc/my.cnf
[mysqld]
socket = /tmp/mysql.sock
# 爲MySQL客戶程序與服務器之間的本地通訊指定一個套接字文件(Linux下默認是/var/lib/mysql/mysql.sock文件)
port = 3306
# 指定MsSQL偵聽的端口 ,這個端口可與本身修改
skip-name-resolve
#禁止MySQL對外部鏈接進行DNS解析,使用這一選項能夠消除MySQL進行DNS解析的時間。但須要注意,若是開啓該選項, 則全部遠程主機鏈接受權都要使用IP地址方式,不然MySQL將沒法正常處理鏈接請求. 這個通常在配置文件中禁用掉
key_buffer = 384M
# key_buffer是用於索引塊的緩衝區大小,增長它可獲得更好處理的索引(對全部讀和多重寫)。索引被全部的線程共享,key_buffer的大小視內存大小而定。
table_open_cache = 512
# MySQL每打開一個表,都會讀入一些數據到table_open_cache緩存中,當MySQL在這個緩存中找不到相應信息時,纔會去磁盤上讀取。默認值64, 假定系統有200個併發鏈接,則需將此參數設置爲200*N(N爲每一個鏈接所需的文件描述符數目);當把table_open_cache設置爲很大時,若是系統處理不了那麼多文件描述符,那麼就會出現客戶端失效,鏈接不上.
相似於一個緩存區
max_allowed_packet = 4M
# 接受的數據包大小;增長該變量的值十分安全,這是由於僅當須要時纔會分配額外內存。例如,僅當你發出長查詢或MySQLd必須返回大的結果行時MySQLd纔會分配更多內存。 該變量之因此取較小默認值是一種預防措施,以捕獲客戶端和服務器之間的錯誤信息包,並確保不會因偶然使用大的信息包而致使內存溢出。
這個值能夠適當的調大,好比調到16M
sort_buffer_size = 2M
# MySQL執行排序使用的緩衝大小。若是想要增長ORDER BY的速度,首先看是否可讓MySQL使用索引而不是額外的排序階段。若是不能,能夠嘗試增長sort_buffer_size變量的大小
read_buffer_size = 2M
# 讀查詢操做所能使用的緩衝區大小。和sort_buffer_size同樣,該參數對應的分配內存也是每鏈接獨享。對錶進行順序掃描的請求將分配一個讀入緩衝區,MySQL會爲它分配一段內存緩衝區。 若是對錶的順序掃描請求很是頻繁,而且你認爲頻繁掃描進行得太慢,能夠經過增長該變量值以及內存緩衝區大小提升其性能.
join_buffer_size = 2M
# 聯合查詢操做所能使用的緩衝區大小,和sort_buffer_size同樣,該參數對應的分配內存也是每鏈接獨享
query_cache_size = 32M
# 指定MySQL查詢結果緩衝區的大小
read_rnd_buffer_size = 2M
# 隨機讀緩衝區大小。當按任意順序讀取行時(例如,按照排序順序),將分配一個隨機讀緩存區。進行排序查詢時,MySQL會首先掃描一遍該緩衝,以免磁盤搜索,提升查詢速度,若是須要排序大量數據,可適當調高該值。但MySQL會爲每一個客戶鏈接發放該緩衝空間,因此應儘可能適當設置該值,以免內存開銷過大
myisam_sort_buffer_size =64M
# MyISAM表發生變化時從新排序所需的緩衝
thread_concurrency = 8
# 最大併發線程數,取值爲服務器邏輯CPU數量×2
thread_cache = 8
#該值表示能夠從新利用保存在緩存中線程的數量,當斷開鏈接時若緩存中還有空間,那麼客戶端的線程將被放到緩存中,若是線程從新被請求,那麼請求將從緩存中讀取,若果緩存中是空的或者是新的請求,那麼線程將被從新建立。設置規律爲:1G內存設置爲8,2G內存設置爲16,4G以上設置爲64
max_connections = 1000
#MySQL的最大鏈接數,若是服務器的併發鏈接請求量比較大,建議調高此值,以增長並行鏈接數量,固然這創建在機器能支撐的狀況下,由於若是鏈接數越多,介於MySQL會爲每一個鏈接提供鏈接緩衝區,就會開銷越多的內存,因此要適當調整該值,不能盲目提升設值。能夠過'conn%'通配符查看當前狀態的鏈接數量,以定奪該值的大小。
max_connect_errors = 6000
# 對於同一主機,若是有超出該參數值個數的中斷錯誤鏈接,則該主機將被禁止鏈接。如需對該主機進行解禁,執行:FLUSH HOST。
open_files_limit = 65535
# MySQL打開的文件描述符限制,默認最小1024
skip-locking
# 避免MySQL的外部鎖定,減小出錯概率加強穩定性。
wait_timeout = 8
# 表示空閒的鏈接超時時間,默認是28800s,這個參數是和interactive_timeout一塊兒使用的,也就是說要想讓wait_timeout 生效,必須同時設置interactive_timeout
interactive_timeout = 8
long_query_time = 1
#慢查詢日誌的超時時間
log_slow_queries = /path/to/slow_queries
# 慢查詢日誌路徑,必須配合上面的參數一同使用
筆記有錯誤的地方還請大神指正,小白會繼續修改