1. 請對POSIX風(fēng)格和兼容Perl風(fēng)格兩種正則表達式的主要函數(shù)進行類比說明
ereg preg_match
ereg_replace preg_replace
2. 請說明在php.ini中safe_mode開啟之后對于PHP系統(tǒng)函數(shù)的影響
safe_mode是提供一個基本安全的共享環(huán)境。在一個多用戶共享的phpweb服務(wù)器上,當(dāng)這臺服務(wù)器開啟了safe_mode模式,有以下函數(shù)將會受到影響。首先,一下嘗試訪問文件系統(tǒng)的函數(shù)將會被限制,運行服務(wù)器的用戶id,如果想要嘗試操作某個文件,必須要用戶該文件的讀取或者寫入的訪問權(quán)限。
因此,在safe_mode打開的情況下,下列函數(shù)將會收到限制:
ckdir,move_uploaded_file,chgrp,parse_ini_file,chown,rmdir,copy,rename,fopen,
require,highlight_file,show_source,include,symlink,link,touch,mkdir,unlink
以上都是跟操作文件系統(tǒng)有關(guān)的函數(shù),除此之外,一些php擴展的函數(shù)也會受到限制,不能在程序里面直接加載擴展,只能到php.ini里加載,而且php如果需要執(zhí)行操作系統(tǒng)的程序時,必須在safe_mode_exec_dir中指定程序的路徑,否則執(zhí)行將失敗。此外還有exec,shell_exec,pasathru,system,popen等函數(shù)會收到限制
3. PHP5中魔術(shù)方法函數(shù)有哪幾個,請舉例說明各自的用法
__sleep
__wakeup
__toString
__set_state
__construct,
__destruct
__call,
__get,
__set,
__isset,
__unset
__sleep,
__wakeup,
__toString,
__set_state,
__clone
__autoload
4. 請寫出讓,并說明如何在命令行下運行PHP腳本(寫出兩種方式)同時向PHP腳本傳遞參數(shù)?
$PHP_HOME/bin/php -r 'echo $argv[1];' hello
$PHP_HOME/bin/php hello.php hello
window下,假設(shè)php安裝目錄為c:\program files\php5\,那么使用命令窗口進入到該路徑下,敲入php hello.php回車,則會執(zhí)行當(dāng)前路徑下的hello.php文件,
如果要指向其他路徑下php文件,可以在php 路徑/hello.php ,這種形式稱為CLI模式,我們平時通過瀏覽器看到的那種成為CGI模式,至于傳遞參數(shù),php文件在cli模式下,直接通過在文件名稱后面接參數(shù),多個參數(shù)中間用空格隔開,在php文件里面是通過兩個變量來獲取參數(shù)的,一個是$argv,一個是$argc,前者是傳遞參數(shù)的數(shù)組,默認第一個為php文件的名稱;后者為$argv的數(shù)組個數(shù)。
linux下,一般程序安裝都會安裝在/usr/bin/php下面,可以通過man php查看一下,如果有信息說明可以使用,使用方法類似于window下。如果前面這步成立,那么你可以直接 php php文件 來運行php文件,如果man php沒有信息,則說明當(dāng)前php執(zhí)行文件沒有在環(huán)境路徑里面,可以修改環(huán)境路徑包含php路徑,也可以類似于window進入php路徑,在執(zhí)行 php php文件。其他類似于window下。
5. PHP的垃圾收集機制是怎樣的
在PHP中,沒有任何變量指向這個對象時,這個對象就成為垃圾。PHP會將其在內(nèi)存中銷毀;這是PHP 的GC垃圾處理機制,防止內(nèi)存溢出。
當(dāng)一個 PHP線程結(jié)束時,當(dāng)前占用的所有內(nèi)存空間都會被銷毀,當(dāng)前程序中所有對象同時被銷毀。GC進程一般都跟著每起一個SESSION而開始運行的.gc目的是為了在session文件過期以后自動銷毀刪除這些文件.
執(zhí)行這些函數(shù)也可以起到回收作用
__destruct /unset/mysql_close