PHP簡介

人們常說,PHP是世界上最美的語言,緣何PHP的魅力如此之大呢,今天來帶你揭開PHP神秘的面紗

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

(0)
wangxczwangxcz
上一篇 2018-06-23 11:03
下一篇 2018-06-23 11:25

相關推薦

  • SSH端口轉發及相關實驗

    在上一節我們知道,SSH會自動加密和解密所有SSH客戶端和服務器之間的網絡數據。但是,SSH還同時提供了一個非常有用的功能,這就是端口轉發。

    2018-05-22
  • 使用Systemd把自作腳本服務化(加入開機啟動)

    Systemd的出現,使得自己編寫的腳本可更容易的添加進系統服務,進而實現開機啟動。

    例如,我們可以把最簡單的hello world腳本進行擴展,將其添加進系統服務,使之開機自啟動。

    Linux筆記 2018-06-12
  • linux第二周

    總結

    Linux筆記 2018-04-08
  • memcached

    數據結構模型: 結構化數據:關系型數據庫;mysql、mariadb、oracledb 半結構化數據:xml、json、nosql 非結構化數據:文件系統; 緩存系統的種類: 代理式緩存; 旁路式緩存; memcached的特性: k/v緩存:可序列化數據;存儲項:key/value,標志,過期時間; 功能的實現一半依賴于服務端,一半依賴客戶端; 分布式緩存…

    2018-07-14
  • 第五周總結

    軟RAID ? mdadm:為軟RAID提供管理界面 ? 為空余磁盤添加冗余 ? 結合內核中的md(multi devices) ? RAID設備可命名為/dev/md0、/dev/md1、/dev/md2、/dev/md3等 如果硬盤只分出了一個分區,可以用 dd if=/dev/sdb of=/dev/sdc bs=1 count=66 skip=446…

    Linux筆記 2018-05-01
  • docker學習記錄系列(一)

    虛擬化與容器

    Linux筆記 2018-06-02
欧美性久久久久