PHP+MySQL+Dreamweaver整合教學(PHPMaker運用設計網站教學):快速設計網站與網頁
總教頭特別企畫【專業整合課程】比傳統的學習的還要快速與實用!


感謝您造訪 PHP程式設計+MySQL資料庫+Dreamweaver整合教學(PHPMaker運用設計網站教學)密訓基地。 你可進入教學詳細內容介紹頁面,詳細瞭解PHP程式設計+MySQL資料庫(PHPMaker運用設計網站教學)及相關技術維護影片教學(完整配套措施),馬上可以設計架站程式與PHP網頁,快速建立MySQL資料庫、自動生成PHP網頁。可對資料庫進行瀏覽、修改、查詢、加入和刪除(整合成我們需要的網站)。

要在網路上經營網站賺大錢,不能只會下載現有的程式來架站(自己設計才能完全符合專業的特殊需求),你不用死背PHP語法,更可以完全不用花錢用購買資料庫(PHPMySQL完全免費!)你可以透過技術學習,讓PHP程式網頁+網路資料庫+Dreamweaver整合教學→讓你快速成為:【動態網站程式設計專家→你能因此賺大錢】!

 PHP程式設計+MySQL資料庫+Dreamweaver整合教學(PHPMaker運用設計網站教學):

http://por.tw/php/new-E_learning/index.php


PHP程式設計+MySQL資料庫+Dreamweaver整合教學(PHPMaker運用教學)密訓基地  總教頭  敬上

瀏覽模式: 普通 | 列表

PHP下載CSS檔案中的圖片的代碼

您想要使用PHP程式語法下載CSS檔案中的圖片嗎?
我相信每個做web的程式員也都會有類似的需求與想法。

在PHP下載CSS檔案中的圖片過程中,必不可少的需要下載樣式檔案中的圖片。
碰到比較龐大的樣式檔案,其中可能會有上百個需要下載的圖片,那麼使用下面這段小代碼是最為合適的了。

--------------------------------------------------------------------
< ?php
/*
More & Original PHP Framwork
Copyright (c) 2007 - 2008 IsMole Inc.

Author: kimi
Documentation: 下載樣式檔案中的圖片,PHP下載CSS檔案中的圖片工具
*/

//note 設定PHP逾時時間
set_time_limit(0);

//note 取得樣式檔案內容
$styleFileContent = file_get_contents('images/style.css');

//note 符合出需要下載的URL位址
preg_match_all("/url((.*))/", $styleFileContent, $imagesURLArray);

//note 迴圈需要下載的位址,逐個下載
$imagesURLArray = array_unique($imagesURLArray[1]);
foreach($imagesURLArray as $imagesURL) {
file_put_contents(basename($imagesURL), file_get_contents($imagesURL));
}
-----------------------------------------------------

PHP程式設計問題諮詢:
為什麼我升級PHP後,原來的程式出現滿螢幕的 Notice: Undefined variable:


---------------------------------------------------------
PHP程式設計問題回覆:
 Notice: Undefined variable:
這是警告的意思,由於變數未定義引起的.
打開php.ini,找到最下面的error_reporting,修改為error_reporting = E_ALL & ~E_NOTICE

對於Parse error錯誤
error_reporting(0)無法關閉.
如果你想關閉任何錯誤提示,打開php.ini,找到display_errors,設置為display_errors = Off.以後任何錯誤都不會提示.
PHP程式設計問題諮詢:
我怎麼知道系統預設支援什麼函數?


---------------------------------------------------------
PHP程式設計問題回覆:
要怎麼知道系統預設支援什麼函數,請看以下的範例:


<?php
$arr = get_defined_functions();
Function php() {
}
echo  "<pre>";
Echo  "這裏顯示系統所支援的所有函數,和自定以函數php ";
print_r($arr);
echo  "</pre>";
?>

---------------------------------------------------------
『將軍』你是武藝高強?膽識過人?精通騎射?您生錯時代啦!
『戰馬』你是汗血寶馬?善奔能越?躍馬中原?此戰場沒有你的舞台!
動態的架站程式時代,要自訂PHP程式頁面有那麼難嗎?
MySQL『資料庫』與『資料表』,用PHP程式有那麼難呼叫嗎?
不用死背『PHP程式』與『MySQL資料庫』語法也能設計嗎?
這是自動化軟體程式的年代(用PHPMaker設計在彈指之間完成)
這不是:神話!程式軟體模組取代了這一切複雜的工程
死背『PHP程式』與『MySQL資料庫』語法,是為學校考試用的!
因為,有些人的技術已經離這個網站的實用性非常遙遠!
------------------------------------------------------------
大家都知道網路創業的好處:
1.初期建置網站金額較低,甚至零成本。
2.初期人事、水電成本較低。
3.網路店面比較沒有曝光的地區限制(除非產品、物流、語言的限制)。
4.消費者可以在任何時間瀏覽與選購商品(24小時營業)。
5.初期可採用眾多的網路平台,免費宣傳、曝光方式,之後再採用付費的方式,提高效益。
6.即使沒有成功,成本損失也較低。


想要網路創業自動賺錢,你應該具備那些專業技能呢?

那座而言不如起而行,如何開始您的第一步行動呢?

1.先評估自己會什麼網路技能?不會那些網路技能?
將自己的優勢寫下來,也將自己需要進修的專業技能逐一記錄下來

2.找到您需要的課程(利用下班時間,努力精研)
最好是影片課程,不要只是一般書店的書籍或網路電子書
(因為圖片與文字根本學習效率不好,無法有效迅速學會,學習中有問題要問誰?)
實際網路經營時發生網站語法錯誤或網站被駭客入侵!
那您最好有個專業『會程式語言與架設主機』的老師可以免費技術諮詢
不然,一發生問題,您的網路事業就停擺了,網站一停就無收入!
(就好像上班放無薪假一樣....悽慘!)。
有甚至網站資料全毀,資料庫也出問題,你要在第一時間內就能快速修護!
這一點你可要小心!網路創業絕對要有:技術諮詢!
迅速回覆的專業老師(或專業技術顧問)。
不然,就像大海裡頭的孤鳥,叫天天不應,叫地地也不靈
(自己閉門造車摸索是網路創業者最悲慘的失敗原因!)。


attachments/201208/5398530876.jpg

2.你的網站要自己架設!
(請人設計網站費用貴,小則三四萬高者也有十幾萬元的,往後網站維護也不方便!)

這方面你可以學習:
1.網站架設與網頁設計教學
詳細介紹:
http://por.tw/Website_Design/E_learning/index.php
長期技術支援網站:
http://por.tw/Website_Design

2.購物網站架站教學
詳細介紹:
http://por.tw/sale/cmmerse-4-all/index.php
長期技術支援網站:
http://por.tw/sale

3.部落格架站、行銷、賺錢術教學
詳細介紹:
http://por.tw/blog/E_learning/index.php
長期技術支援網站:
http://por.tw/blog

4.PHP+MySQL+PHPMaker+Dreamweaver整合教學
(PHPMaker運用設計網站教學)

詳細介紹:
http://por.tw/php/new-E_learning/index.php
長期技術支援網站:
http://por.tw/php

5.Flash-動畫製作教學
詳細介紹:
http://por.tw/flash/new-E_learning/index.php
長期技術支援網站:
http://por.tw/flash
-------------------------------------------------------------------------
3.網站圖片非常重要,你如果不會拍照與修圖,那您就要學習:
商業商品攝影教學
詳細介紹:
http://por.tw/design/photographing_Course/index.php
長期技術支援網站:
http://por.tw/design
-------------------------------------------------------------------------
4.影片能讓您的網站更出色,如果您不會錄影
或影片剪接、編輯、上字幕、做特效,那您就要學習:

【錄影影片製作】技術教學
詳細介紹:
http://por.tw/photo-video/video_Course/index.php
長期技術支援網站:
http://por.tw/photo-video
-------------------------------------------------------------------------
5.有了網站,接下來就是『如何將網站經營的有聲有色?』
這就需要專業的網路行銷技術:
A.搜尋引擎排名SEO教學
詳細介紹:
http://por.tw/seo/new-seo/index.php
長期技術支援網站:
http://por.tw/seo

B.EDM電子報製作教學
詳細介紹:
http://por.tw/edm/edm_Marketing/index.php
長期技術支援網站:
http://por.tw/edm

C.電子書製作賺錢密技教學
詳細介紹:
http://por.tw/ebook/new-ebook/index.php
長期技術支援網站:
http://por.tw/ebook

D.【訂單王】超級網路秒殺成交法-A-page 【一頁定江山】行銷賺錢術
詳細介紹:
http://por.tw/page/new-E_learning/index.php
長期技術支援網站:
http://por.tw/page
-------------------------------------------------------------------------
6.如果您想要學習『專案方式』的專業技能,您可以學習:
A.「網路創業賺錢_如何從網路創業賺錢賺到第一個100萬!」課程
詳細介紹:
http://por.tw/soho/new-E_learning/index.php
長期技術支援網站:
http://por.tw/soho

B.藉助『程式』邁向網路自動賺錢術(Auto Rich -自富課程)
詳細介紹:
http://por.tw/Rich/new-E_learning/index.php
長期技術支援網站:
http://por.tw/Rich

C.【正印家族】授權營運專案‧自動印鈔機賺錢術
詳細介紹:
http://por.tw/money/new-E_learning/index.php
長期技術支援網站:
http://por.tw/money
-------------------------------------------------------------------------
7.您的網站可以用兩種方式經營
1.是租用虛擬主機
(創業初期,如果尚無長遠規劃可租虛擬主機空間架設網站)

2.是自己擁有獨立主機!
如果您有此長遠的規劃,那您可以申購此服務:
替你架設Linux主機伺服器+影片教你維護(還有遠端技術協助)讓你自己當家作主!
http://por.tw/linux/new-E_learning/index.php
長期技術支援網站:
http://por.tw/linux
-------------------------------------------------------------------------
8.此外,如果你對國外軟體感覺不好用,那您可以學習:
軟體中文化實戰教學影片
軟體中文化實戰教學影片教學詳細介紹:
http://por.tw/f2blog/new-E_learning/index.php
長期技術支援網站:
http://por.tw/f2blog

不論是英文、日文、大陸簡體或其他軟體,能透過軟體中文化技術變成:繁體中文版
那在網路事業的經營上,所有要用到的軟體,就能通通變成:繁體中文版啦!
那是業經營起來當然是:得心應手!手到擒來!

-------------------------------------------------------------------------

PHP程式網頁生成靜態頁面的方法

在PHP網站開發中為了網站推廣和SEO等需要,需要對網站進行全站或局部靜態化處理,PHP生成靜態HTML頁面有多種方法
例如:利用PHP範本、快取等實現頁面靜態化
今天就以PHP案例教學形式討論PHP生成靜態頁面的方法。
頁面靜態化的方法,分為兩種
一種是偽靜態,就是url 重寫
一種是你真的靜態化。

下面介紹PHP中頁面靜態化的方法。

什麼是PHP程式網頁靜態化?
PHP程式網頁靜態化的簡單理解就是使網站生成頁面以靜態HTML的形式展現在訪客面前
PHP靜態化分純靜態化和偽靜態化,兩者的區別在於PHP生成靜態頁面的處理機制不同。


PHP程式網頁生成靜態HTML頁面的方法:

1、利用PHP範本生成靜態頁面
PHP範本實現靜態化非常方便,比如安裝和使用PHP Smarty實現網站靜態化。

2、使用PHP檔案讀寫功能生成靜態頁面
PHP生成靜態頁面案例代碼
-----------------------------------------------------------------------------
    <?
    $out1 = "<html><head><title>PHP程式網頁靜態化教學</title></head>
    <body>歡迎訪問PHP網站開發教學網http://por.tw,本文主要介紹PHP網站頁面靜態化的方法
    </body></html>";
    $fp = fopen("leapsoulcn.html","w");
    if(!$fp)
    {
    echo "System Error";
    exit();
    }
    else {
    fwrite($fp,$out1);
    fclose($fp);
    echo "Success";
    }
    ?>
-----------------------------------------------------------------------
    3、使用PHP輸出控制函數(Output Control)生成靜態頁面

    輸出控制函數(Output Control)也就是使用和控制快取來生成靜態HTML頁面,也會使用到PHP檔案讀寫函數。

    PHP生成靜態頁面案例代碼

-----------------------------------------------------------------------
        <?
        ob_start();
        echo "<html>".
        "<head>".
        "<title>PHP網站靜態化教學</title>".
        "</head>".
        "<body>歡迎訪問PHP網站開發教學網http://por.tw,本文主要介紹PHP網站頁面靜態化的方法</body>".
        "</html>";
        $out1 = ob_get_contents();
        ob_end_clean();
        $fp = fopen("leapsoulcn.html","w");
        if(!$fp)
        {
        echo "System Error";
        exit();
        }
        else
        {
        fwrite($fp,$out1);
        fclose($fp);
        echo "Success";
        }
        ?>
---------------------------------------------------------------------
        我們知道使用PHP進行網站開發,一般執行結果直接輸出到遊覽器,為了使用PHP生成靜態頁面,就需要使用輸出控制函數控制快取區,以便取得快取區的內容,然後再輸出到靜態HTML頁面檔案中以實現網站靜態化。

        PHP生成靜態頁面的思路為:
        首先開啟快取,然後輸出了HTML內容(你也可以通過include將HTML內容以檔案形式包括進來),之後取得快取中的內容,清理快取後通過PHP檔案讀寫函數將快取內容寫入到靜態HTML頁面檔案中。

 獲得輸出的快取內容以生成靜態HTML頁面的過程需要使用三個函數:
ob_start()、ob_get_contents()、ob_end_clean()。

        PHP程式網頁生成靜態頁面知識:

        1、ob_start函數一般主要是用來開啟快取,注意使用ob_start之前不能有任何輸出,如空格、字元等。

        2、ob_get_contents函數主要用來取得快取中的內容以字串形式返回,注意此函數必須在ob_end_clean函數之前呼叫,否則取得不到快取內容。

        3、ob_end_clean函數主要是清理快取中的內容並關閉快取,完成則返回True,失敗則返回False


        PHP輸出控制函數(Output Control)有很多應用。

        至此,使用PHP生成靜態HTML頁面以實現網站靜態化的方法就介紹完了,根據實際情況和需求你可以選取不同的靜態化方法。

從 PHP 4 移植到 PHP 5需要注意的事項

從 PHP 4 移植到 PHP 5需要注意的事項

向後不相容的改變

儘管大部分 PHP 4 的代碼應該不用修改就能運行,還是應該留意以下向後不相容的改變:

    *

      有了一些新關鍵字。
    *

      strrpos() 和 strripos() 如今使用整個字串作為 needle。
    *

      非法使用字串偏移量會導致 E_ERROR 而不是 E_WARNING。一個非法使用的例子:$str = 'abc'; unset($str[0]);.
    *

      array_merge() 被改成只接受陣列。若果傳遞入非陣列變量,對每個此類參數都會發出一條 E_WARNING 訊息。要小心因為你的代碼有可能瘋狂發出 E_WARNING。
    *

      PATH_TRANSLATED 伺服器變量在 Apache2 SAPI 中不再暗中設定,這和 PHP 4 中的情形相反,若果 Apache 沒產生此值則其被設為和 SCRIPT_FILENAME 伺服器變量一樣的值。此修改是為了遵守 CGI 規範。更多訊息見 bug #23610,並參考手冊中 $_SERVER['PATH_TRANSLATED'] 的說明。此問題也影響到 PHP >= 4.3.2 的版本。
    *

      Tokenizer 增加不再定義 T_ML_COMMENT 常量。若果把 error_reporting 設為 E_ALL,PHP 將產生一條訊息。儘管 T_ML_COMMENT 從來都沒用到過,還是在 PHP 4 中定義了。在 PHP 4 和 PHP 5 中 // 和 /* */ 都被解析為 T_COMMENT 常量。但是 PHPDoc 風格的注解 /** */,自 PHP 5 開始被 PHP 解析,被識別為 T_DOC_COMMENT。
    *

      若果 variables_order 內含「S」,$_SERVER 應該帶有 argc 和 argv 被產生。若果會員特別配製系統不建立 $_SERVER,那此變量當然就不存在了。改變的地方是不管 variables_order 怎麼設定,在 CLI 版本中 argc 和 argv 總是可用的。本來 CLI 版不是總會產生全局變量 $argc 和 $argv 的。
    *

      沒有屬性的對象不再被當成「empty」。
    *

      有些情況下類必須在使用前被定義。這僅在使用了一些 PHP 5 的新特性的時候發生。其它情況下行為都沒變。
    *

      get_class(),get_parent_class() 和 get_class_methods() 如今返回的類/方法名和定義時的名字一致(區分大小寫),對於依賴以前行為(類/方法名總是返回小寫的)的老腳本可能產生問題。一個可能的解決方法是在腳本中搜尋所有這些函數並使用 strtolower()。

      區分大小寫的改變也適用於魔術常量 __CLASS__,__METHOD__ 和 __FUNCTION__。其值都會嚴格按照定義時的名字返回(區分大小寫)。
    *

      ip2long() 在傳遞入一個非法 IP 作為參數時返回 FALSE,不再是 -1。
    *

      若果在包括檔案中定義有函數,則不管在 return() 之前還是之後都可以在主檔案中呼叫。若果檔案被包括兩次,PHP 5 會發出致命錯誤,因為函數已經被定義,而 PHP 4 不管這個。因此推薦使用 include_once() 而不要去檢查檔案是否已被包括以及在包括檔案中有條件返回。
    *

      include_once() 和 require_once() 在 Windows 下先將路徑規格化,因此包括 A.php 和 a.php 只會把檔案包括一次。

例子 B-1. strrpos() 和 strripos() 如今用整個字串作為 needle
<?php
var_dump(strrpos('ABCDEF','DEF')); //int(3)

var_dump(strrpos('ABCDEF','DAF')); //bool(false)
?>

例子 B-2. 沒有屬性的對象不再被當成「empty」
<?php
class test { }
$t = new test();

var_dump(empty($t)); // echo bool(false)

if ($t) {
    // Will be executed
}
?>

例子 B-3. 有些情況下類必須在使用之前定義
<?php

//works with no errors:
$a = new a();
class a {
}


//throws an error:
$a = new b();

interface c{
}
class b implements c {
}

?>

PHP【函式簡介】Require及Require_once( )

PHP【函式簡介】Require及Require_once( )
    require 的使用方法如 require("header.inc"); 。
這個語法通常放在 PHP 程式的最前面,PHP 程式在執行前,就會先讀入 require 所指定引入的檔案,使它變成 PHP 程式網頁的一部份。
常用的函式可以寫成一個函式庫檔案,然後用這個方法將它引入網頁中。

require_once 的作用和 require 是幾乎相同的,唯一的差別在於 require_once 會先檢查要引入的檔案是不是已經在該程式中的其他地方被引入過了。
如果有的話,就不會再次重複引入該檔案。
這項功能有時候是很重要的,比方說要引入的檔案裡面宣告了一些我們自行定義的函數,那麼如果在同一個程式重複引入這個檔案,在第二次引入的時候便會發生錯誤訊息,因為 PHP 不允許相同名稱的函數被重複宣告。

php.ini中的php-5.2.0配置指令詳解

php.ini中的php-5.2.0配置指令詳解

本文並非是對英文版 php.ini 的簡單翻譯,而是參考了眾多資料以後,結合自己的理解,

在原有 php.ini 基礎上增加了一些實用模組的配置說明,同時對檔案內容的安排進行了調整。

由於作者不喜歡 no-free 的玩意兒,所以刪除了除 MySQL 和 PostgreSQL 以外的其他資料庫模組配置選項。

關於php.ini ;;

這個檔案必須命名為''php.ini''並放置在httpd.conf中的PHPIniDir指令特殊的目錄中。

語法

該檔案的語法非常簡單。空白字元和以分號開始的行被簡單地忽略。

章節標題(例如: [php])也被簡單地忽略,即使將來它們可能有某種意義。

設定指令的格式如下:

directive = value

指令名(directive)是大小寫敏感的!所以"foo=bar"不同於"FOO=bar"。

值(value)可以是:

1. 用引號界定的字串(如:"foo")

2. 一個數字(整數或浮點數,如:0, 1, 34, -1, 33.55)

3. 一個PHP常量(如:E_ALL, M_PI)

4. 一個INI常量(On, Off, none)

5. 一個表達式(如:E_ALL & ~E_NOTICE)

INI檔案中的表達式僅使用:位運算符、邏輯非、圓括號:

| 位或

& 位與

~ 位非

! 邏輯非

布爾標誌用 On 表示開啟,用 Off 表示關閉。

一個空字串可以用在等號後不寫任何東西表示,或是用 none 關鍵字:

foo =     ; 將foo設為空字串

foo = none  ; 將foo設為空字串

foo = "none" ; 將foo設為字串''none''



如果你在指令值中使用動態延伸(PHP延伸或Zend延伸)中的常量,

那麼你只能在加載這些動態延伸的指令行之後使用這些常量。

httpd.conf ;;

還可以在httpd.conf中覆蓋php.ini的值,以進行更靈活的配置:

php_value name value ;設定非bool型的指令,將value設為none則清除先前的設定

php_flag name on|off ;僅用於設定bool型的指令



PHP常量(如E_ALL)僅能在php.ini中使用,在httpd.conf中必須使用相應的遮罩值。

帶"SYS"標誌的指令只能在httpd.conf中的全局配置部分使用,

帶"ini"標誌的指令不能在httpd.conf中使用,它們僅能用於php.ini中。

====================配置指令詳解========================================

以下每個指令的設定值都與 PHP-5.2.0 內建的預設值相同。

也就是說,如果''php.ini''不存在,或是你刪掉了某些行,預設值與之相同。

;;;;;;;;;;;;

Apache ;;

;;;;;;;;;;;;

[Apache]

僅在將PHP作為Apache模組時才有效。

engine = On

是否啟用PHP解析引擎。

可以在httpd.conf中基於目錄或是虛擬主電腦來開啟或是關閉PHP解析引擎。

last_modified = Off

是否在Last-Modified應答頭中放置該PHP腳本的最後修改時間。

xbithack = Off

是否不管檔案結尾是什麼,都作為PHP可執行位組來解析。

child_terminate = Off

PHP腳本在請求結束後是否容許使用apache_child_terminate()函數終止子程式。

該指令僅在UNIX平台上將PHP安裝為Apache1.3的模組時可用。其他情況下皆不存在。

;;;;;;;;;;;;;

PHP核心 ;;

;;;;;;;;;;;;;

[PHP-Core-DateTime]

前四個配置選項目前僅用於date_sunrise()和date_sunset()函數。

date.default_latitude = 31.7667

預設緯度

date.default_longitude = 35.2333

預設經度

date.sunrise_zenith = 90.583333

預設日出天頂

date.sunset_zenith = 90.583333

預設日落天頂

date.timezone =

未設定TZ環境變量時用於所有日期及時間函數的預設時區。

中國大陸應當使用"PRC"

應用時區的優先順序為:

1. 用date_default_timezone_set()函數設定的時區(如果設定了的話)

2. TZ 環境變量(如果非空的話)

3. 該指令的值(如果設定了的話)

4. PHP自己推測(如果操作系統支援)

5. 如果以上都不完成,則使用 UTC

[PHP-Core-Assert]

assert.active = On

是否啟用assert()斷言評估

assert.bail = Off

是否在發生失敗斷言時中止腳本的執行
 
回復 引用 舉報頂端  
落伍 離線
   

層級: 管理員
 
UID: 818
精華: 1
發帖: 232
金錢: 12043 金
威望: 293 點
貢獻值: 1 點
交易幣: 0 元
線上時間: 7(時)
註冊時間: 2008-09-18
最後登入: 2010-05-12  沙發  發表於: 2008-10-15    只看該作者 │  小 中 大


assert.callback =

發生失敗斷言時執行的回呼函數

assert.quiet_eval = Off

是否使用安靜評估(不顯示任何錯誤訊息,相當於error_reporting=0)。

若關閉則在評估斷言表達式的時候使用現用的的error_reporting指令值。

assert.warning = On

是否對每個失敗斷言都發出警示

[PHP-Core-SafeMode]

安全模式是為了解決共享伺服器的安全問題而設立的。

但試圖在PHP層解決這個問題在結構上是不合理的,

正確的做法應當是修改web伺服器層和操作系統層。

因此在PHP6中廢除了安全模式,並打算使用open_basedir指令取代之。

safe_mode = Off

SYS

是否啟用安全模式。

開啟時,PHP將檢查現用的腳本的擁有者是否和被操作的檔案的擁有者相同,

相同則容許操作,不同則拒絕操作。

safe_mode_gid = Off

SYS

在安全模式下,預設在訪問檔案時會做UID比較檢查。

但有些情況下嚴格的UID檢查反而是不適合的,寬鬆的GID檢查已經足夠。

如果你想將其放寬到僅做GID比較,可以開啟這個參數。

safe_mode_allowed_env_vars = "PHP_"

SYS

在安全模式下,使用者僅可以變更的環境變量的首碼清單(逗號分隔)。

容許使用者設定某些環境變量,可能會導致潛在的安全漏洞。

注意: 如果這一參數值為空,PHP將容許使用者變更任意環境變量!

safe_mode_protected_env_vars = "LD_LIBRARY_PATH"

SYS

在安全模式下,使用者不能變更的環境變量清單(逗號分隔)。

這些變量即使在safe_mode_allowed_env_vars指令設定為容許的情況下也會得到保護。

safe_mode_exec_dir = "/usr/local/php/bin"SYS

在安全模式下,只有該目錄下的可執行程式才容許被執行系統程式的函數執行。

這些函數是:system, escapeshellarg, escapeshellcmd, exec, passthru,

proc_close, proc_get_status, proc_nice, proc_open, proc_terminate, shell_exec

safe_mode_include_dir =

SYS

在安全模式下,該組目錄和其子目錄下的檔案被包括時,將略過UID/GID檢查。

換句話說,如果此處的值為空,任何UID/GID不符合的檔案都不容許被包括。

這裡設定的目錄必須已經存在於include_path指令中或是用完整路徑來包括。

多個目錄之間用冒號(Win下為分號)隔開。

特殊的限制實際上是一個首碼,而非一個目錄名,

也就是說"/dir/incl"將容許訪問"/dir/include"和"/dir/incls"

如果您希望將訪問控制在一個特殊的目錄,那麼請在結尾加上斜線。

sql.safe_mode = Off

SYS

是否使用SQL安全模式。

如果開啟,指定預設值的資料庫連線函數將會使用這些預設值代替支援的參數。

對於每個不同資料庫的連線函數,其預設值請參考相應的手冊頁面。

[PHP-Core-Safe]

allow_url_fopen = On

ini

是否容許開啟遠端檔案

allow_url_include = Off

SYS

是否容許include/require遠端檔案。

disable_classes =

ini

該指令接受一個用逗號分隔的類名清單,以禁用特定的類。

disable_functions =

ini

該指令接受一個用逗號分隔的函數名清單,以禁用特定的函數。

enable_dl = On

SYS

是否容許使用dl()函數。dl()函數僅在將PHP作為apache模組安裝時才有效。

禁用dl()函數主要是出於安全考慮,因為它可以繞過open_basedir指令的限制。

在安全模式下始終禁用dl()函數,而不管此處如何設定。

expose_php = On

ini

是否暴露PHP被安裝在伺服器上的事實(在http頭中加上其簽名)。

它不會有安全上的直接威脅,但它使得用戶端知道伺服器上安裝了PHP。

open_basedir =

SYS

將PHP容許操作的所有檔案(內含檔案自身)都限制在此組目錄清單下。

當一個腳本試圖開啟一個指定目錄樹之外的檔案時,將遭到拒絕。

所有的符號連線都會被解析,所以不可能通過符號連線來避開此限制。

特殊值''.''指定了存放該腳本的目錄將被當做基準目錄。

但這有些危險,因為腳本的工作目錄可以輕易被chdir()改變。

對於共享伺服器,在httpd.conf中靈活設定該指令將變得非常有用。

在Windows中用分號分隔目錄,UNIX系統中用冒號分隔目錄。

作為Apache模組時,父目錄中的open_basedir路徑將自動被繼承。

特殊的限制實際上是一個首碼,而非一個目錄名,

也就是說"/dir/incl"將容許訪問"/dir/include"和"/dir/incls",

如果您希望將訪問控制在一個特殊的目錄,那麼請在結尾加上一個斜線。

預設是容許開啟所有檔案。

[PHP-Core-Error]

error_reporting = E_ALL & ~E_NOTICE  
回復 引用 舉報頂端  
落伍 離線
   

層級: 管理員
 
UID: 818
精華: 1
發帖: 232
金錢: 12043 金
威望: 293 點
貢獻值: 1 點
交易幣: 0 元
線上時間: 7(時)
註冊時間: 2008-09-18
最後登入: 2010-05-12  2樓  發表於: 2008-10-15    只看該作者 │  小 中 大


錯誤報告層級是位欄位的疊加,推薦使用 E_ALL | E_STRICT

1 E_ERROR       致命的運行時錯誤

2 E_WARNING      運行時警示(非致命性錯誤)

4 E_PARSE       編譯時解析錯誤

8 E_NOTICE      運行時提醒(經常是bug,也可能是有意的)

16 E_CORE_ERROR    PHP啟動時起始化過程中的致命錯誤

32 E_CORE_WARNING   PHP啟動時起始化過程中的警示(非致命性錯)

64 E_COMPILE_ERROR   編譯時致命性錯

128 E_COMPILE_WARNING  編譯時警示(非致命性錯)

256 E_USER_ERROR    使用者自訂的致命錯誤

512 E_USER_WARNING   使用者自訂的警示(非致命性錯誤)

1024 E_USER_NOTICE    使用者自訂的提醒(經常是bug,也可能是有意的)

2048 E_STRICT      編碼標準化警示(建議如何修改以向前相容)

4096 E_RECOVERABLE_ERROR 接近致命的運行時錯誤,若未被捕獲則視同E_ERROR

6143 E_ALL        除E_STRICT外的所有錯誤(PHP6中為8191,即包括所有)

track_errors = Off

是否在變量$php_errormsg中儲存最近一個錯誤或警示訊息。

display_errors = On

是否將錯誤訊息作為輸出的一部分顯示。

在最終發佈的web站台上,強烈建議你關掉這個特性,並使用錯誤日誌代替(參看下面)。

在最終發佈的web站台開啟這個特性可能暴露一些安全訊息,

例如你的web服務上的檔案路徑、資料庫規劃或別的訊息。

display_startup_errors = Off

是否顯示PHP啟動時的錯誤。

即使display_errors指令被開啟,關閉此參數也將不顯示PHP啟動時的錯誤。

建議你關掉這個特性,除非你必須要用於除錯中。

report_memleaks = On

是否報告記憶體洩漏。這個參數只在以除錯模式編譯的PHP中起作用,

並且必須在error_reporting指令中包括 E_WARNING

report_zend_debug = On

尚無說明文件

html_errors = On

是否在出錯訊息中使用HTML標示。

注意: 不要在發佈的站台上使用這個特性!

docref_root = ;"http://localhost/phpmanual/"

docref_ext =  ;".html"

如果開啟了html_errors指令,PHP將會在出錯訊息上顯示超連線,

直接連結到一個說明這個錯誤或是導致這個錯誤的函數的頁面。

你可以從http://www.php.net/docs.php下載php手冊,

並將docref_root指令指向你本地的手冊所在的URL目錄。

你還必須設定docref_ext指令來指定檔案的副檔名(必須含有''.'')。

注意: 不要在發佈的站台上使用這個特性。

error_prepend_string = ;"<font color=#f00>"

用於錯誤訊息前輸出的字串

error_append_string =  ;"</font>"

用於錯誤訊息後輸出的字串

xmlrpc_errors = Off

xmlrpc_error_number = 0

尚無文件

[PHP-Core-Logging]

define_syslog_variables = Off

是否定義各種系統日誌變量,如:$LOG_PID, $LOG_CRON 等等。

關掉它以提高效率的好主意。

你可以在運行時呼叫define_syslog_variables()函數來定義這些變量。

error_log =

將錯誤日誌記錄到哪個檔案中。該檔案必須對Web伺服器使用者可寫。

syslog 表示記錄到系統日誌中(NT下的事件日誌, Unix下的syslog(3))

如果此處未設定任何值,則錯誤將被記錄到Web伺服器的錯誤日誌中。

log_errors = Off

是否在記錄檔案裡記錄錯誤,具體在哪裡記錄取決於error_log指令。

強烈建議你在最終發佈的web站台時使用日誌記錄錯誤而不是直接輸出,

這樣可以讓你既知道那裡出了問題,又不會暴露敏感訊息。

log_errors_max_len = 1024

設定錯誤日誌中附加的與錯誤訊息關聯聯的錯誤源的最大長度。

這裡設定的值對顯示的和記錄的錯誤以及$php_errormsg都有效。

設為 0 可以容許無限長度。

ignore_repeated_errors = Off

記錄錯誤日誌時是否忽略重複的錯誤訊息。

錯誤訊息必須出現在同一檔案的同一行才被被視為重複。

ignore_repeated_source = Off

是否在忽略重複的錯誤訊息時忽略重複的錯誤源。

[PHP-Core-Mail]

要使信件函數可用,PHP必須在編譯時能夠訪問sendmail程式。

如果使用其它的信件程式,如qmail或postfix,確保使用了相應的sendmail包裝。

PHP首先會在系統的PATH環境變量中搜尋sendmail,接著按以下順序搜尋:

/usr/bin:/usr/sbin:/usr/etc:/etc:/usr/ucblib:/usr/lib

強烈建議在PATH中能夠找到sendmail。

另外,編譯PHP的使用者必須能夠訪問sendmail程式。

SMTP = "localhost"

mail()函數中用來傳送信件的SMTP伺服器的主電腦名稱或是IP位址。僅用於win32。

smtp_port = 25

SMTP伺服器的埠號。僅用於win32。

sendmail_from =

傳送信件時使用的"From:"頭中的信件位址。僅用於win32

該選項還同時設定了"Return-Path:"頭。

sendmail_path = "-t -i"

SYS

僅用於unix,也可支援參數(預設的是''sendmail -t -i'')

sendmail程式的路徑,通常為"/usr/sbin/sendmail或/usr/lib/sendmail"。

configure腳本會嘗試找到該程式並設定為預設值,但是如果失敗的話,可以在這裡設定。

不使用sendmail的系統應將此指令設定為sendmail替代程式(如果有的話)。

例如,Qmail使用者通常可以設為"/var/qmail/bin/sendmail"或"/var/qmail/bin/qmail-inject"。

qmail-inject 不需要任何選項就能正確處理信件。

mail.force_extra_parameters =

作為額外的參數傳遞給sendmail庫的強制特殊的參數附加值。

這些參數總是會取代掉mail()的第5個參數,即使在安全模式下也是如此。

[PHP-Core-ResourceLimit]

default_socket_timeout = 60

預設socket逾時(秒)

max_execution_time = 30

每個腳本最大容許執行時間(秒),0 表示沒有限制。

這個參數有助於阻止劣質腳本無休止的佔用伺服器資源。

該指令僅影響腳本本身的運行時間,任何其它花費在腳本運行之外的時間,

如用system()/sleep()函數的使用、資料庫查詢、檔案上傳等,都不內含在內。

在安全模式下,你不能用ini_set()在運行時改變這個設定。  

memory_limit = 16M

一個腳本所能夠申請到的最大記憶體位元組數(可以使用K和M作為單位)。

這有助於防止劣質腳本消耗完伺服器上的所有記憶體。

要能夠使用該指令必須在編譯時使用"--enable-memory-limit"配置選項。

如果要取消記憶體限制,則必須將其設為 -1 。

設定了該指令後,memory_get_usage()函數將變為可用。

max_input_time = -1

每個腳本解析輸入資料(POST, GET, upload)的最大容許時間(秒)。

-1 表示不限制。

post_max_size = 8M

容許的POST資料最大位元組長度。此設定也影響到檔案上傳。

如果POST資料超出限制,那麼$_POST和$_FILES將會為空。

要上傳大檔案,該值必須大於upload_max_filesize指令的值。

如果啟用了記憶體限制,那麼該值應當小於memory_limit指令的值。

realpath_cache_size = 16K

SYS

指定PHP使用的realpath(規範化的絕對路徑名)緩沖區大小。

在PHP開啟大量檔案的系統上應當增大該值以提高效能。

realpath_cache_ttl = 120

SYS

realpath緩沖區中訊息的有效期(秒)。

對檔案很少變動的系統,可以增大該值以提高效能。

[PHP-Core-FileUpLoad]

file_uploads = On

SYS

是否容許HTTP檔案上傳。

參見upload_max_filesize, upload_tmp_dir, post_max_size指令

upload_max_filesize = 2M

容許上傳的檔案的最大尺寸。

upload_tmp_dir =

SYS

檔案上傳時存放檔案的臨時目錄(必須是PHP程式使用者可寫的目錄)。

如果未指定則PHP使用系統預設的臨時目錄。

[PHP-Core-MagicQuotes]

PHP6將取消魔術引號,相當於下列指令全部為 Off

magic_quotes_gpc = On

是否對輸入的GET/POST/Cookie資料使用自動字串轉義( '' "  NULL )。

這裡的設定將自動影響 $_GEST $_POST $_COOKIE 陣列的值。

若將本指令與magic_quotes_sybase指令同時開啟,則僅將單引號('')轉義為(''''),

其它特殊字元將不被轉義,即( "  NULL )將保持原樣!!

建議關閉此特性,並使用自訂的過濾函數。

magic_quotes_runtime = Off

是否對運行時從外部資源產生的資料使用自動字串轉義( '' "  NULL )。

若開啟本指令,則大多數函數從外部資源(資料庫,文字檔案等)返回資料都將被轉義。

例如:用SQL查詢得到的資料,用exec()函數得到的資料,等等---www.bianceng.cn

若將本指令與magic_quotes_sybase指令同時開啟,則僅將單引號('')轉義為(''''),

其它特殊字元將不被轉義,即( "  NULL )將保持原樣!!

建議關閉此特性,並視具體情況使用自訂的過濾函數。

magic_quotes_sybase = Off

是否採用Sybase形式的自動字串轉義(用 '''' 表示 '')

[PHP-Core-HighLight]

highlight.bg = "#FFFFFF"

highlight.comment = "#FF8000"

highlight.default = "#0000BB"

highlight.html = "#000000"

highlight.keyword = "#007700"

highlight.string = "#DD0000"

語法高亮模式的色彩(通常用於顯示 .phps 檔案)。

只要能被<font color=xxx>接受的東西就能標準工作。

[PHP-Core-Langue]

short_open_tag = On

是否容許使用"<? ?>"短標識。否則必須使用"<?php ?>"長標識。

除非你的php程式僅在受控環境下運行,且只供自己使用,否則請不要使用短標示。

如果要和XML結合使用PHP,可以選取關閉此選項以方便直接內嵌"<?xml ... ?>",

不然你必須用PHP來輸出:<? echo ''<?xml version="1.0"''; ?>

本指令也會影響到縮寫形式"<?=",它和"<? echo"等價,要使用它也必須開啟短標示。

asp_tags = Off

是否容許ASP風格的標示"<% %>",這也會影響到縮寫形式"<%="。

PHP6中將刪除此指令

arg_separator.output = "&"

PHP所產生的URL中用來分隔參數的分隔設定。

另外還可以用"&"或","等等。

arg_separator.input = "&"

PHP解析URL中的變量時使用的分隔設定清單。

字串中的每一個字元都會被當作分割符。

另外還可以用",&"等等。

allow_call_time_pass_reference = On

是否強迫在函數呼叫時按引用傳遞參數(每次使用此特性都會收到一條警示)。

php反對這種做法,並在將來的版本裡不再支援,因為它影響到了代碼的整潔。

鼓勵的方法是在函數聲明裡明確指定哪些參數按引用傳遞。

我們鼓勵你關閉這一選項,以保證你的腳本在將來版本的語系裡仍能標準工作。

auto_globals_jit = On

是否僅在使用到$_SERVER和$_ENV變量時才建立(而不是在腳本一啟動時就自動建立)。

如果並未在腳本中使用這兩個陣列,開啟該指令將會獲得效能上的提升。

要想該指令生效,必須關閉register_globals和register_long_arrays指令。

auto_prepend_file =

auto_append_file =

指定在主檔案之前/後自動解析的檔名。為空表示禁用該特性。

該檔案就像呼叫了include()函數被包括進來一樣,因此會使用include_path指令的值。

注意:如果腳本通過exit()終止,那麼自動副檔名將不會發生。---www.bianceng.cn

variables_order = "EGPCS"

PHP註冊 Environment, GET, POST, Cookie, Server 變量的順序。

分別用 E, G, P, C, S 表示,按從左到右註冊,新值覆蓋舊值。

舉例說,設為"GP"將會導致用POST變量覆蓋同名的GET變量,

並完全忽略 Environment, Cookie, Server 變量。

推薦使用"GPC"或"GPCS",並使用getenv()函數訪問環境變量。

register_globals = Off

是否將 E, G, P, C, S 變量註冊為全局變量。

開啟該指令可能會導致嚴重的安全問題,除非你的腳本經由非常仔細的檢查。

推薦使用預定義的超全局變量:$_ENV, $_GET, $_POST, $_COOKIE, $_SERVER

該指令受variables_order指令的影響。

PHP6中已經刪除此指令。

register_argc_argv = On

是否聲明$argv和$argc全局變量(包括用GET方法的訊息)。

建議不要使用這兩個變量,並關掉該指令以提高效能。

register_long_arrays = On

是否啟用舊式的長式陣列(HTTP_*_VARS)。

鼓勵使用短式的預定義超全局陣列,並關閉該特性以獲得更好的效能。

PHP6中已經刪除此指令。

always_populate_raw_post_data = Off

是否總是生成$HTTP_RAW_POST_DATA變量(原始POST資料)。

否則,此變量僅在遇到不能識別的MIME類型的資料時才產生。

不過,訪問原始POST資料的更好方法是 php://input 。

$HTTP_RAW_POST_DATA對於enctype="multipart/form-data"的表單資料不可用。

unserialize_callback_func =

如果解序列化處理器需要案例化一個未定義的類,

這裡特殊的回呼函數將以該未定義類的名字作為參數被unserialize()呼叫,

以免得到不完整的"__PHP_Incomplete_Class"對象。

如果這裡沒有指定函數,或特殊的函數不包括(或實現)那個未定義的類,將會顯示警示訊息。

所以僅在確實需要實現這樣的回呼函數時才設定該指令。

若要禁止這個特性,只需置空即可。

y2k_compliance = On

是否強制開啟2000年適應(可能在非Y2K適應的瀏覽器中導致問題)。

zend.ze1_compatibility_mode = Off

是否使用相容Zend引擎I(PHP 4.x)的模式。

這將影響對象的複製、構造(無屬性的對象會產生FALSE或0)、比較。

相容模式下,物件將按值傳遞,而不是預設的按引用傳遞。

precision = 14

浮點型資料顯示的有效位數。

serialize_precision = 100

將浮點型和雙精度型資料序列化存儲時的精度(有效位數)。

預設值能夠確保浮點型資料被解序列化程式解碼時不會丟失資料。

[PHP-Core-OutputControl]

輸出控制函數很有用,特別是在已經輸出了訊息之後再傳送HTTP頭的情況下。

輸出控制函數不會作用於header()或setcookie()等函數傳送的HTTP頭,

而只會影響類似於echo()函數輸出的訊息和內嵌在PHP代碼之間的訊息。

implicit_flush = Off

是否要求PHP輸出層在每個輸出塊之後自動重整資料。

這等效於在每個 print()、echo()、HTML塊 之後自動呼叫flush()函數。

開啟這個選項對程式執行的效能有嚴重的影響,通常只推薦在除錯時使用。

在CLI SAPI的執行模式下,該指令預設為 On 。

output_buffering = 0

輸出緩沖區大小(位元組)。建議值為4096~8192。

輸出緩衝容許你甚至在輸出正文內容之後再傳送HTTP頭(內含cookies)。

其代價是輸出層減慢一點點速度。

設定輸出緩衝可以減少寫入,有時還能減少網路封包的傳送。

這個參數的實際收益很大程度上取決於你使用的是什麼Web伺服器以及什麼樣的腳本。

output_handler =

將所有腳本的輸出重導至一個輸出處理函數。

比如,重導至mb_output_handler()函數時,字元編碼將被透明地轉換為特殊的編碼。

一旦你在這裡指定了輸出處理程式,輸出緩衝將被自動開啟(output_buffering=4096)。

注意0: 此處僅能使用PHP內建的函數,自訂函數應在腳本中使用ob_start()指定。

注意1: 可移植腳本不能依賴該指令,而應使用ob_start()函數明確指定輸出處理函數。

使用這個指令可能會導致某些你不熟悉的腳本出錯。

注意2: 你不能同時使用"mb_output_handler"和"ob_iconv_handler"兩個輸出處理函數。

你也不能同時使用"ob_gzhandler"輸出處理函數和zlib.output_compression指令。

注意3: 如果使用zlib.output_handler指令開啟zlib輸出壓縮,該指令必須為空。

[PHP-Core-Directory]

doc_root =

SYS

PHP的"根目錄"。僅在非空時有效。

如果safe_mode=On,則此目錄之外的檔案一概被拒絕。

如果編譯PHP時沒有指定FORCE_REDIRECT,並且在非IIS伺服器上以CGI模式運行,

則必須設定此指令(參見手冊中的安全部分)。

替代專案是使用的cgi.force_redirect指令。

include_path = ".:/path/to/php/pear"

指定一組目錄用於require(), include(), fopen_with_path()函數尋找檔案。

格式和系統的PATH環境變量類似(UNIX下用冒號分隔,Windows下用分號分隔):

UNIX: "/path1:/path2"

Windows: "path1;path2"

在包括路徑中使用''.''可以容許相對路徑,它代表現用的目錄。

user_dir =

SYS

告訴php在使用 /~username 開啟腳本時到哪個目錄下去找,僅在非空時有效。

也就是在使用者目錄之下使用PHP檔案的基本目錄名,例如:"public_html"

extension_dir = "/path/to/php"

SYS

存放延伸庫(模組)的目錄,也就是PHP用來尋找動態延伸模組的目錄。

Windows下預設為"C:/php5"

[PHP-Core-HTTP]

default_mimetype = "text/html"

default_charset = ;"utf-8"

PHP預設會自動輸出"Content-Type: text/html" HTTP頭。

如果將default_charset指令設為"utf-8",

那麼將會自動輸出"Content-Type: text/html; charset=utf-8"。

[PHP-Core-Unicode]

detect_unicode = On

尚無文件

[PHP-Core-Misc]

auto_detect_line_endings = Off

是否讓PHP自動偵測行結束符(EOL)。

如果的你腳本必須處理Macintosh檔案,

或是你運行在Macintosh上,同時又要處理unix或win32檔案,

開啟這個指令可以讓PHP自動偵測EOL,以便fgets()和file()函數可以標準工作。

但同時也會導致在Unix系統下使用換行符(CR)作為項目分隔設定的人遭遇不相容行為。

cgi.rfc2616_headers = 0

指定PHP在傳送HTTP響應代碼時使用何種報頭。

0 表示傳送一個"Status: "報頭,Apache和其它web伺服器都支援。

若設為1,則PHP使用RFC2616標準的頭。

除非你知道自己在做什麼,否則保持其預設值 0

cgi.nph = Off

在CGI模式下是否強制對所有請求都傳送"Status: 200"狀態碼。

fastcgi.impersonate = Off

IIS中的FastCGI支援模仿用戶端安全令牌的能力。

這使得IIS能夠定義運行時所基於的請求的安全上下文。

Apache中的mod_fastcgi不支援此特性(03/17/2002)

如果在IIS中運行則設為On,預設為Off。

fastcgi.logging = On

是否記錄通過FastCGI進行的連線。

[PHP-Core-Weirdy]

這些選項僅存在於文件中,卻不存在於phpinfo()函數的輸出中

async_send = Off

是否異步傳送。

from = ;"john@doe.com"

定義匿名ftp的密碼(一個email位址)

近核心模組 ;;

[Pcre]

Perl相容正則表達式模組

pcre.backtrack_limit = 100000

PCRE的最大回溯(backtracking)步數。

pcre.recursion_limit = 100000

PCRE的最大遞歸(recursion)深度。

如果你將該值設的非常高,將可能耗盡程式的棧空間,導致PHP崩潰。

[Session]

除非使用session_register()或$_SESSION註冊了一個變量。

否則不管是否使用了session_start(),都不會自動加入任何session記錄。

內含resource變量或有迴圈引用的對象包括指向自身的引用的對象,不能儲存在會話中。

register_globals指令會影響到會話變量的存儲和還原。

session.save_handler = "files"

存儲和檢索與會話關聯的資料的處理器名字。預設為檔案("files")。

如果想要使用自訂的處理器(如基於資料庫的處理器),可用"user"。

有一個使用PostgreSQL的處理器:http://sourceforge.net/projects/phpform-ext/

session.save_path = "/tmp"

傳遞給存儲處理器的參數。對於files處理器,此值是建立會話資料檔的路徑。

Windows下預設為暫存檔夾路徑。

你可以使用"N;[MODE;]/path"這樣模式定義該路徑(N是一個整數)。

N表示使用N層深度的子目錄,而不是將所有資料檔都儲存在一個目錄下。

[MODE;]可選,必須使用8進位數,預設600(=384),表示每個目錄下最多儲存的會話檔案數量。

這是一個提高大量會話效能的好主意。

改善PHP開發模式的方法

改善PHP開發模式的方法
  
關於如何使用PHP語系來開發應用程式,我們每個人都有自己的技巧和方法。
實際上,我們大家都知道,有很多種模式和方法可以讓開發變得更加簡單。
儘管如此,還是有一些方法,尤其是編碼樣式和習慣,是大家公認的。
我們列舉出了可以改善PHP開發模式的方法。

我們不應該輕視代碼的組織,選取的編碼樣式應該是事先約定好的,許多人只是隨機的在做這些事情,這讓他們的代碼變得十分混亂,十分令人難以理解。

你可以在那裡宣稱自己是最好的開發者,但是,如果你的代碼缺乏良好的組織,你是不會走的太遠的。
舉個例子,比如說,在當地的社區大學中,你是一名教師。
如果你決定從初級和進階的資料中隨機地選取一大堆知識,然後按照這種順序把這些知識教授給你的學生
而不是從初級到進階,循序漸進地教授給你的學生,那麼你的學生們會十分困惑,而且,作為一名教師,他們是不會歡迎你的,如果他們不歡迎你,他們就不會上你的課。

我的觀點是,找出一種適合你的組織方法和編碼樣式,並且一直堅持下去,這樣的話,你的代碼的組織和配置會變得十分有條理。

對於獨立的開發者來說,內定檔案並不是很流行,它主要是面向企業項目和開源項目的。
但是,這並不是說,內定檔案對你的項目沒有好處。對於你的項目來說,內定檔案是改善你的編碼和工作模式的重中之重。

許多支援PHP的整合開發環境(IDE)都支援內定檔案,這可以說明你記住你建立那些函數的時候用了哪些參數,或是,那些函數的功能是什麼?

如果你把你的項目移交給另外一個開發者或團隊,他們一定會對這份內定檔案心存感激的,因為它傳遞了和PHP項目(尤其是那些規模較大的PHP項目)有關的大量訊息。
 

使用PHP執行linux系統指令

如何使用PHP執行linux系統指令呢?
相信這是很多學員想知道答案!

首先先要給大家介紹PHP執行linux系統指令的幾個基本函數。

system函數

說明:執行外部程式並顯示輸出資料。
語法:string system(string command, int [return_var]);
返回值: 字串

詳細介紹:
本函數就像是 C 語中的函數 system(),用來執行指令,並輸出結果。若是 return_var 參數存在,則執行 command 之後的狀態會填入 return_var 中。同樣值得注意的是若需要處理使用者輸入的資料,而又要防止使用者耍花招破解系統,則可以使用 EscapeShellCmd()。若 PHP 以模組式的執行,本函數會在每一行輸出後自動更新 Web 伺服器的輸出緩衝暫存區。若需要完整的返回字串,且不想經由不必要的其它中間的輸出介面,可以使用 PassThru()。

案例代碼:
< ?php
$last_line = system('ls', $retval);
echo 'Last line of the output: ' . $last_line;
echo '<hr />Return value: ' . $retval;
?>

exec函數
說明:執行外部程式。
語法:string exec(string command, string [array], int [return_var]);
返回值: 字串

詳細介紹:
本函數執行輸入 command 的外部程式或外部指令。
它的返回字串只是外部程式執行後返回的最後一行;若需要完整的返回字串,可以使用 PassThru() 這個函數。

要是參數 array 存在,command 會將 array 加到參數中執行,若不欲 array 被處理,可以在執行 exec() 之前呼叫 unset()。
若是 return_var 跟 array 二個參數都存在,則執行 command 之後的狀態會填入 return_var 中。

值得注意的是若需要處理使用者輸入的資料,而又要防止使用者耍花招破解系統,則可以使用 EscapeShellCmd()。

案例代碼:
<?php
echo exec('whoami');
?>  

popen函數
說明:開啟檔案。
語法:int popen(string command, string mode);
返回值: 整數

詳細介紹:
本函數執行指令開檔,而該檔案是用管道模式處理的檔案。
用本函數開啟的檔案只能是單向的 (只能讀或只能寫),而且一定要用 pclose() 關閉。
在檔案操作上可使用 fgets()、fgetss() 與 fputs()。若是開檔發生錯誤,返回 false 值。

案例代碼:
<?
$fp = popen( "/bin/ls", "r" );
?>  
本PHP程式設計+MySQL資料庫+Dreamweaver整合教學(PHPMaker運用設計網站教學)密訓基地立志於收集各類PHP程式設計、MySQL資料庫及網頁設計技術教學資訊,便於本人和廣大網友及網友查詢檢索,無論公司或個人認為本站存在侵權內容均可與本站聯繫,任何此類反饋資訊一經查明屬實後,將立即移除!