本文目錄一覽:
- 1、PHP中的安全模式是指的什麼?
- 2、php調用shell的方法技巧
- 3、php設置set_time_limit(0)後還是會停止
- 4、php運行於安全模式,最後一步恢復欄目目錄不成功,有救嗎?
- 5、什麼是php 的safe mode? php.exe? php-cgi.exe? php-win.exe?
PHP中的安全模式是指的什麼?
手冊如是說:章 24. 安全模式目錄被安全模式限制或屏蔽的函數php 的安全模式是為了試圖解決共享伺服器(shared-server)安全問題而設立的。在結構上,試圖在 php 層上解決這個問題是不合理的,但修改 web 伺服器層和操作系統層顯得非常不現實。因此許多人,非凡是 isp,目前使用安全模式。表格 24-1. 控制安全模式的設置選項有:設置選項 默認值safe_mode offsafe_mode_gid 0safe_mode_include_dirsafe_mode_exec_dir 1open_basedirsafe_mode_allowed_env_vars php_safe_mode_protected_env_vars ld_library_pathdisable_functions當 safe_mode 設置為 on,php 將檢查當前腳本的擁有者是否和將被文件函數操作的文件的擁有者相匹配。例如: -rw-rw-r– 1 rasmus rasmus 33 jul 1 19:20 script.php-rw-r–r– 1 root root 1116 may 26 18:01 /etc/passwd運行 script.php ?php假如安全模式被激活,則將會導致以下錯誤: warning: safe mode restriction in effect. the script whose uid is 500 is notallowed to access /etc/passwd owned by uid 0 in /docroot/script.php on line 2同時,或許會存在這樣的環境,在該環境下,寬鬆的 gid 檢查已經足夠,但嚴格的 uid 檢查反而是不適合的。您可以用 safe_mode_gid 選項來控制這種檢查。假如設置為 on 則進行寬鬆的 gid 檢查;設置為 off(默認值)則進行 uid 檢查。除了 safe_mode 以外,假如您設置了 open_basedir 選項,則所有的文件操作將被限制在您指定的目錄下。例如: directory /docrootphp_admin_value open_basedir /docroot/directory假如您在設置了 open_basedir 選項後運行同樣的 script.php,則其結果會是: warning: open_basedir restriction in effect. file is in wrong directory in/docroot/script.php on line 2您也可以單獨地屏蔽某些函數。
php調用shell的方法技巧
php調用shell的方法技巧
一、配置
查看php.ini中配置是否打開安全模式,主要是以下三個地方
safe_mode = (這個如果為off下面兩個就不用管了)
disable_functions =
safe_mode_exec_dir=
二、使用
由於PHP基本是用於WEB程序開發的,所以安全性成了人們考慮的一個重要方面。於是PHP的設計者們給PHP加了一個門:安全模式。如果運行在安全模式下,那麼PHP腳本中將受到如下四個方面的限制:
① 執行外部命令
② 在打開文件時有些限制
③ 連接MySQL資料庫
④ 基於HTTP的認證
在安全模式下,只有在特定目錄中的外部程序才可以被執行,對其它程序的調用將被拒絕。這個目錄可以在php.ini文件中用 safe_mode_exec_dir指令,或在編譯PHP是加上–with-exec-dir選項來指定,默認是/usr/local/php /bin。
如果你調用一個應該可以輸出結果的外部命令(意思是PHP腳本沒有錯誤),得到的’卻是一片空白,那麼很可能你的網管已經把PHP運行在安全模式下了。
三、如何做?
在PHP中調用外部命令,可以用如下三種方法來實現:
1) 用PHP提供的專門函數
PHP提供共了3個專門的執行外部命令的函數:system(),exec(),passthru()。
system()
原型:string system (string command [, int return_var])
system()函數很其它語言中的差不多,它執行給定的命令,輸出和返回結果。第二個參數是可選的,用來得到命令執行後的狀態碼。
例子:
複製代碼 代碼如下:system(“/usr/local/bin/webalizer/webalizer”);
exec()
原型:string exec (string command [, string array [, int return_var]])
exec() 函數與system()類似,也執行給定的命令,但不輸出結果,而是返回結果的最後一行。雖然它只返回命令結果的最後一行,但用第二個參數array可以得到完整的結果,方法是把結果逐行追加到array的結尾處。所以如果array不是空的,在調用之前最好用unset()最它清掉。只有指定了第二個參數時,才可以用第三個參數,用來取得命令執行的狀態碼。
例子:
複製代碼 代碼如下:exec(“/bin/ls -l”);
exec(“/bin/ls -l”, $res);
#$res是一個數據,每個元素代表結果的一行
exec(“/bin/ls -l”, $res, $rc);
#$rc的值是命令/bin/ls -l的狀態碼。成功的情況下通常是0
passthru()
原型:void passthru (string command [, int return_var])
passthru() 只調用命令,不返回任何結果,但把命令的運行結果原樣地直接輸出到標準輸出設備上。所以passthru()函數經常用來調用象pbmplus(Unix 下的一個處理圖片的工具,輸出二進位的原始圖片的流)這樣的程序。同樣它也可以得到命令執行的狀態碼。
例子:
複製代碼 代碼如下:header(“Content-type: image/gif”);
passthru(“./ppmtogif hunte.ppm”);
希望本文所述對大家的PHP程序設計有所幫助。
;
php設置set_time_limit(0)後還是會停止
set_time_limit(0);
當php運行於安全模式時,此功能不能生效。除了關閉安全模式或改變php.ini中的時間限制,沒有別的辦法。
php運行於安全模式,最後一步恢復欄目目錄不成功,有救嗎?
恢復欄目不成功,帶表你的目錄許可權不夠,系統無法建立欄目目錄。
什麼是php 的safe mode? php.exe? php-cgi.exe? php-win.exe?
安全模式下,PHP程序的行為被進行了限制,比如不能執行某些函數,只能打開指定文件夾的文件等。一般在你的主機提高個人網站,就是PHP的程序所有者不是你本人的時候,需要設置安全方式。
php.exe是提供來在命令行執行PHP文件的工具,比如你在有文件ABC.PHP,那麼你可以在CMD命令提示符下執行命令php.exe abc.php來運行這個PHP文件。
php-cgi.exe是提供來作為CGI使用的,區別是在文件輸出所有內容之前,會自動輸出一個下面的HTTP頭:
X-Powered-By: PHP/5.2.5
Content-type: text/html
php-win.exe也可以執行PHP文件,區別是大打開控制台,不顯示輸出內容。可以用來編寫無需顯示界面的文件處理、網路服務等程序。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/160541.html