PHP簡介
PHP是通用服務器端腳本編程語言,主要用于web開發實現動態web頁面,也是最早實現將腳本嵌入
HTML源碼文檔中的服務器端腳本語言之一。同時,PHP還提供了一個命令行接口,因此,其也可以
在大多數系統上作為一個獨立的shell來使用
官方網站:http://www.php.net/
PHP 文件是什么?
PHP 文件可包含文本、HTML、JavaScript代碼和 PHP 代碼
PHP 代碼在服務器上執行,結果以純 HTML 形式返回給瀏覽器
PHP 文件的默認文件擴展名是 “.php”
PHP 能做什么?
PHP 可以生成動態頁面內容
PHP 可以創建、打開、讀取、寫入、關閉服務器上的文件
PHP 可以收集表單數據
PHP 可以發送和接收 cookies
PHP 可以添加、刪除、修改您的數據庫中的數據
PHP 可以限制用戶訪問您的網站上的一些頁面
PHP 可以加密數據
通過 PHP,您不再限于輸出 HTML。您可以輸出圖像、PDF 文件,甚至 Flash 電影。您還可以輸出任
意的文本,比如 XHTML 和 XML。
為什么使用 PHP?
PHP 可在不同的平臺上運行(Windows、Linux、Unix、Mac OS X 等)
PHP 與目前幾乎所有的正在被使用的服務器相兼容(Apache、IIS 等)
PHP 提供了廣泛的數據庫支持
PHP 是免費開源的
PHP 易于學習,并可高效地運行在服務器端
php語言格式
<?php
…php code…
?>
基于LINUX系統的PHP布署
php:腳本語言解釋器
配置文件:/etc/php.ini, /etc/php.d/*.ini
配置文件在php解釋器啟動時被讀取
對配置文件的修改生效方法
Modules:重啟httpd服務
FastCGI:重啟php-fpm服務
Modules配置格式:
/etc/php.ini配置文件格式:
[foo]:Section Header
directive = value
注釋符:較新的版本中,已經完全使用;進行注釋
#:純粹的注釋信息
;:用于注釋可啟用的directive
max_execution_time= 30 ? ? ? ?最長執行時間30s
memory_limit 128M ? ? ? ? ? ? ? ? 生產不夠,可調大
display_errors off ? ? ? ? ? ? ? ? ? ? ?調試使用,不要打開,否則可能暴露重要信息
display_startup_errors off ? ? ? 建議關閉
post_max_size 8M ? ? ? ? ? ? ? ? ? ?最大上傳數據大小,生產可能臨時要調大,比下面項要大
upload_max_filesize 2M ?? ? ? ? ?最大上傳文件,生產可能要調大
max_file_uploads = 20? ? ? ? ? ? ?同時上傳最多文件數
date.timezone =Asia/Shanghai 指定時區
short_open_tag=on ? ? ? ? ? ? ? ? ? 開啟短標簽,如<? phpinfo();?>
php.ini的核心配置選項文檔:
http://php.net/manual/zh/ini.core.php
php.ini配置選項列表:
http://php.net/manual/zh/ini.list.php
FastCGI配置格式:
配置文件:/etc/php.ini,/etc/php.d/*.ini
Module下,重啟Httpd服務
FastCGI模式下,重啟php-fpm服務
配置文件格式
配置文件格式:[foo]:Section Header
Directive=value
注釋符:# 純粹的注釋信息
; 用于注釋可啟動的指令
說明:在較新的版本中,已經完全使用”;”進行注釋
fcgi服務配置文件:/etc/php-fpm.conf, /etc/php-fpm.d/*.conf
連接池:
??? pm = static|dynamic
static:固定數量的子進程;pm.max_children
? dynamic:子進程數量以動態模式管理
???????? pm.max_children
???????? pm.start_servers
???????? pm.min_spare_servers
???????? pm.max_spare_servers
???????? pm.max_requests = 500
確保運行php-fpm進程的用戶對session目錄有讀寫權限
mkdir /var/lib/php/session
chown apache.apache /var/lib/php/session
配置fastcgi
(1)配置httpd,添加/etc/httpd/conf.d/fcgi.conf配置文件,內容類似
DirectoryIndex index.php
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/html/$1
注意:在HTTPD服務器上必須啟用proxy_fcgi_module模塊,充當PHP客戶端
httpd –M |grep fcgi
cat /etc/httpd/conf.modules.d/00-proxy.conf
(2)虛擬主機配置
vim /etc/httpd/conf.d/vhosts.conf
DirectoryIndex index.php
<VirtualHost *:80>
??? ServerName www.b.net
??? DocumentRoot /apps/vhosts/b.net
??? ProxyRequests Off
??? ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/apps/vhosts/b.net/$1
??? <Directory “/apps/vhosts/b.net”>
???????? Options None
???????? AllowOverride None
???????? Require all granted
??? </Directory>
</VirtualHost>
php-mysql
Php連接數據庫三種方式:
1)使用mysql擴展連接數據庫(漸已淘汰)
2)使用mysqli擴展連接數據庫
3)使用pdo擴展連接數據庫(主流);支持mysql外的其他一些數據庫
測試代碼:
1)PHP使用mysql擴展連接數據庫的測試代碼:
vim /var/www/html/test.php
<?php
$conn = mysql_connect(‘mysql_host’,’mysql_username’,’mysql_password’);
if ($conn)
echo “OK”;
else
echo “Failure”;
#echo mysql_error();
mysql_close();
?>
連接成功返回OK,失敗則返回Failure
2)PHP用mysqli擴展連接數據庫的測試代碼:
vim /var/www/html/test.php
<?php
$mysqli=new mysqli(‘mysql_host’,’mysql_username’,’mysql_password’);
if(mysqli_connect_errno()){
echo “Failure”;
$mysqli=null;
exit;
}
echo “OK”;
$mysqli->close();
?>
連接成功返回OK,失敗則返回Failure
3)PHP使用pdo擴展連接數據庫的測試代碼1:
vim /var/www/html/test.php
<?php
$dsn=’mysql:host=localhost;dbname=mysql’;
$username=’root’;
$passwd=’centos’;
$dbh=new PDO($dsn,$username,$passwd);
var_dump($dbh);
?>
連接成功返回object(PDO)#1 (0) { } ,失敗則返回500狀態碼
PHP使用pdo擴展連接數據庫的測試代碼2:
vim /var/www/html/test.php
<?php
try {
$user=’root’;
$pass=’centos’;
$dbh = new PDO(‘mysql:host=localhost;dbname=mysql’, $user, $pass);
foreach($dbh->query(‘SELECT user,host from user’) as $row) {
print_r($row);
}
$dbh = null;
} catch (PDOException $e) {
print “Error!: ” . $e->getMessage() . “<br/>”;
die();
}
?>
成功返回:Array([user]=>root[0]=>root[host]=>127.0.0.1[1]=>127.0.0.1)…
失敗返回:Error!
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/101390