當前位置:首頁 » 編程語言 » php代碼執行

php代碼執行

發布時間: 2023-05-31 14:51:25

php是如何執行代碼解析過程的

就PHP語言來說,它也是一組符合一定規則的約定的指令。 在編程人員將自己的想法以php語言實現後,通過PHP的虛擬機(確切的來說應該是PHP的語言引擎Zend)將這些PHP指令轉變成c語言 (可以理解為更底層的一種指令集)指令,而c語言又會轉變成匯編語言, 最後匯編語言將根據處理器的規則轉變成機器碼執行。這是一個更高層次抽象的不斷具體化,不斷細化的過程。

② 怎麼用php命令執行php代碼

PHP執行命令的四種方法

方法一:使用exec函數執行系統外部命令

原型:function exec(string $command,array[optional] $output,int[optional]
$return_value)

<?
exec("dir",$outPut);

print_r($outPut);
?>


說明:列出和PHP執行文件同級目錄下的所有目錄及文件信息。


知識點:exec執行系統外部命令時不會輸出結果,而是返回結果的最後一行,如果你想得到結果你可以使用第二個參數,讓其輸出到指定的數組,此數組一個記錄代表輸出的一行,即如果輸出結果有20行,則這個數組就有20條記錄,所以如果你需要反復輸出調用不同系統外部命令的結果,你最好在輸出每一條系統外部命令結果時清空這個數組,以防混亂。第三個參數用來取得命令執行的狀態碼,通常執行成功都是返回0。


方法二:使用system函數執行系統外部命令


原型:function system(string $command,int[optional] $return_value)


1
2
3

<?
system("dir");
?>


知識點:system和exec的區別在於system在執行系統外部命令時,直接將結果輸出到游覽器,如果執行命令成功則返回true,否則返回false。第二個參數與exec第三個參數含義一樣。


方法三:使用函數passthru執行系統外部命令


原型:function passthru(string $command,int[optional] $return_value)


知識點:passthru與system的區別,passthru直接將結果輸出到游覽器,不返回任何值,且其可以輸出二進制,比如圖像數據。


方法四:反撇號`(和~在同一個鍵)執行系統外部命令


1
2
3

<?
echo `dir`;
?>


知識點:在使用這種方法執行系統外部命令時,你要確保shell_exec函數可用,否則是無法使用這種反撇號執行系統外部命令的。

③ php代碼執行順序

php代碼理論上是從上到下的執行順序,但是也不是你這樣理解!

他最終的輸出內容,是根據你寫的php代碼的邏輯進行判斷輸出的!

比如:

$i=10;
if($i==20){
echo'您好!'
}else{
echo'太好了';
}

這段代碼執行順序確實是從上到下,但並不是說, echo '您好' 在echo '太好了' 的上面,那就一定會 輸出 「您好」這兩個字,

而是你看的邏輯

首先 $i 等於10,

所以 if ( $i == 20 )這個條件是不成立的

所以最終輸出的結果是 」太好了「3個字!


php所謂的代碼從上到下的執行順序,那是對於php伺服器端而言, 最終你在終端看到的結果, 是以代碼的邏輯思維為准!

④ 如何運行PHP

分類: 電腦/網路 >> 程序設計 >> 其他編程語言
問題描述:

我們要在電腦上運運ASP文件 只要裝IIS就可以。

哪要運行PHP文件呢。該怎麼辦!~

解析:

如何安裝運行php

1. Unix/Windows: 我的php.ini 文件應該放在哪?

UNIX下默認它應該放在 /usr/local/lib 目錄下。 這是它的 /lib. 很多人會在編譯時改變它,使用--with-config-file-path 標志。 例如, 你可以這樣設它: --with-config-file-path=/etc

然後你可以復制源程序包里的 php.ini-dist 到 /etc/php.ini ,編輯它滿足你的本地化需求。

Windows下 php.ini默認的路徑是 Windows 系統目錄. 如果你在使用 Apache webserver, php.ini 則最先在 Apaches 安裝目錄下被查找, 例如: c:\program files\apache group\apache. 這樣你可以有不同的 php.ini 對應不同版本的 Apache(同一台機器上)。

更多細節請查閱 configuration file.

2. Unix: 我安裝了 PHP, 但我每次載入一個文檔, 會得到下面的消息: Document Contains No Data ! 怎麼回事?

這可能是因為你的 PHP 發生了core-mping錯誤。 查找你的伺服器錯誤日誌文件,看看是否屬於這種情況。 然後報告這個錯誤。如果你知道怎樣使用 gdb ,你可以提供一個 backtrace 在你的錯誤報告里。這將會對開發人員解決 這個問題有很大幫助。如果你是在將PHP作為Apache模塊使用,那麼請按下面的步驟做:

停止 d 進程

gdb d

停止 d 進程

> run -X -f /path/to/d.conf

瀏覽你剛才出錯的 URL

> run -X -f /path/to/d.conf

如果你還有 core mp, gdb 現在會通知你

打入: bt

在你的 bug report里應該包含backtrace 。 這些會被發往 bugs.php/

如果你的腳本使用了正則表達式函數 (ereg() and friends), 你應該確保你編譯 PHP 和 Apache 用的是同一個正則表達式包。 在 PHP 和 Apache 1.3.x 這個過程是自動進行的。

3. Unix: 我使用 RPMS 安裝 PHP , 但Apache 不支持 PHP頁面! 怎麼辦?

假設你安裝了 Apache 和 PHP(從 RPM ) , 你需要反注釋或者增加一些行在你的 .conf 文件里: # Extra MolesAddMole mod_php.cAddMole mod_php3.cAddMole mod_perl.c# Extra MolesLoadMole php_mole moles/mod_php.soLoadMole php3_mole moles/libphp3.so /* for PHP 3 */LoadMole php4_mole moles/libphp4.so /* for PHP 4 */LoadMole perl_mole moles/libperl.so

And add: AddType application/x-d-php3 .php3 /* for PHP 3 */AddType application/x-d-php .php /* for PHP 4 */

... 到全局域里, 或者到你想要的 支持PHP的虛擬域里。

4. 我使用 RPMS 安裝 PHP 3 , 但是它沒有我需要的資料庫選項支持! 我該怎麼辦?

因為 PHP 3 內建支持的關系, 編譯一個完整的可適於所有應用的 PHP RPM是相當困難的。 在 PHP 4有談到這點。 對 PHP 3, 我們只好建議你使用INSTALL.REDHAT (在 PHP包里)描述的機制。 如果你一定要使用 RPM 版的 PHP 3, 讀...

RPM 包管理器設置 RPMS 簡單的安裝,不帶資料庫支持 and 因為RPMS 使用 /usr/ 而不是標準的 /usr/local/ 目錄存放文件. 你需要告訴 RPM 文件你要支持哪種資料庫以及它們的最上級目錄的位置。

下面的例子將解釋在Apache模式下怎樣支持通行的資料庫Mysql.

當然所有的這些可以稍作修改,以支持其它的PHP支持的資料庫。我們假設你安裝了 MySQL and Apache ,完全是用 RPMS 安裝的。

首先,移去 mod_php3 : rpm -e mod_php3

然後取得rpm包並安裝, 不是 --重編譯 rpm -Uvh mod_php3-3.0.5-2.src.rpm

編輯/usr/src/redhat/SPECS/mod_php3.spec 文件

在 %build 一節里增加你想要的資料庫支持, 以及路徑信息。

對 MySQL 你應該增加: --with-mysql=/usr \

%build 節看起來象: ./configure --prefix=/usr \ --with-apxs=/usr/ *** in/apxs \ --with-config-file-path=/usr/lib \ --enable-debug=no \ --enable-safe-mode \ --with-exec-dir=/usr/bin \ --with-mysql=/usr \ --with-system-regex

改動完成後,象下面這樣重編rpm : rpm -bb /usr/src/redhat/SPECS/mod_php3.spec

Then install the rpm rpm -ivh /usr/src/redhat/RPMS/i386/mod_php3-3.0.5-2.i386.rpm

重啟 Apache,你已經得到了rpm下的Mysq

l的支持。 注意到這種做法比你重新得到一個 PHP 3 的tarball 代碼,按照 INSTALL.REDHAT 的指引一步一步做要容易得多。

5. Unix: 我用 FrontPage 擴展包對Apache打了補丁, 忽然 PHP 停止工作。 是PHP 和 Apache FrontPage 包不兼容嗎 ?

不是, PHP 和 FrontPage擴展包運行得很好.。問題是FrontPage 包修改了幾個Apache 結構參數,而PHP要用到它們.在FrontPage擴展包被打上後, 重新編譯 PHP (使用 make clean ; make ) ,會解決這個問題。

6. Unix/Windows: 我安裝了PHP,但在瀏覽器里看我的PHP頁面時,空白一片。

在瀏覽器里用 查看源文件 看你的腳本,你可能會發現你看到的是源程序。 這表示 web server 並沒有送腳本到PHP去執行。肯定是伺服器配置上哪兒出了錯。 仔細檢查PHP安裝的 server 配置。

7. Unix/Windows: 我安裝了PHP,但在瀏覽器里看我的 PHP頁面時,我得到一個 server 500 error。

這是伺服器在運行 PHP 時發生了錯誤。 為了看到可讀的錯誤信息,在命令行,改變目錄到 (php.exe Windows)所在目錄, 運行 php -i. 如果有任何問題,詳細的錯誤信息就顯示出來了,它會告訴你下一步該做什麼。 如果你得到滿屏的HTML代碼 (phpinfo() 函數的輸出), 那麼PHP工作正常,這個錯誤就是由於伺服器配置引發的,應該仔細檢查。

8. 某些操作系統: 我安裝PHP沒出錯,可是我啟動Apache時,得到一個 undefined symbol errors: [mybox:user /src/php4] root# apachectl configtest apachectl: /usr/local/apache/bin/d Undefined symbols: _press _unpress

這個問題其實與 PHP 無關, 而與 MySQL 客戶端庫有關。 --with-zlib,有些操作系統需要,而有些不需要。MySQL FAQ已經講述了這個問題。

9. Windows: 我安裝了PHP,但在瀏覽器里看我的PHP頁面, 得到如下錯誤: cgi error: The specified CGI application mi *** ehaved by not returning a plete set of HTTP headers. The headers it did return are:

這是 PHP 根本沒有產生任何輸出。 為了看到可讀的錯誤信息,在命令行,改變目錄到 (php.exe Windows)所在目錄, 運行 php -i. 如果有任何問題,詳細的錯誤信息就顯示出來了,它會告訴你下一步該做什麼。 如果你得到滿屏的HTML代碼 (phpinfo() 函數的輸出), 那麼PHP工作正常。

一旦PHP在命令行模式下工作,再看看你的腳本程序, 它還是失敗,可能是因為以下原因:

你的PHP腳本的許可權許可。 php.exe, php4ts.dll, php.ini 或者任何你可能裝入的PHP文件,它樣都必須能被匿名 inter 用戶 ISUR_ 訪問

腳本文件根本不存在(或者不是你認為的位置。)請注意在IIS里,你能夠阻塞這個錯誤,做法是在設置腳本映射目錄時, 選上 check file exists 框。這樣如果腳本不存在,伺服器會返回一個404錯誤。 這樣做也有其它的一些好處, 就是IIS僅為你做經過授權的操作。

10. Windows: 我嚴格按照install的要求做,可是還是不能讓我的php在IIS下工作。

確定任何想要運行PHP的用戶有操作php.exe的許可權! IIS 使用匿名的inter用戶,它是在IIS安裝時系統自動增加的。 這個用戶需要操作 php.exe的許可權. 還有,任何需要授權的用戶也必須有訪問 php.exe的許可權。 在 IIS4下,你要告訴它PHP是一個腳本引擎。

⑤ 如何利用PHP執行.SQL文件

本篇文章是對使用PHP執行 SQL文件的實現代碼進行了詳細的分析介紹 需要的朋友參考下

demo php:

復制代碼 代碼如下: <?php /** * 讀取 sql 文件並寫入資料庫 * @version demo php */ class DBManager { var $dbHost = ; var $dbUser = ; var $dbPassword = ; var $dbSchema = ; function __construct($host $user $password $schema) { $this >dbHost = $host; $this >dbUser = $user; $this >dbPassword = $password; $this >dbSchema = $schema; } function createFromFile($sqlPath $delimiter = (;/n)|((;/r/n))|(;/r) $prefix = $menter = array( # )) { //判斷文件是否存在 if(!file_exists($sqlPath)) return false; $handle = fopen($sqlPath rb ); $sqlStr = fread($handle filesize($sqlPath)); //通過sql語法的語句分割符進行分割 $segment = explode(";" trim($sqlStr)); //var_mp($segment); //去掉注釋和多餘的空行 foreach($segment as & $statement) { $sentence = explode("/n" $statement); $newStatement = array(); foreach($sentence as $subSentence) { if( != trim($subSentence)) { //判斷是會否是注釋 $isComment = false; foreach($menter as $er) { if(eregi("^(" $er ")" trim($subSentence))) { $isComment = true; break; } } //如果不是注釋 則認為是sql語句 if(!$isComment) $newStatement[] = $subSentence; } } $statement = $newStatement; } //對表名加前綴 if( != $prefix) { //只有表名在第一行出現時才有效 例如 CREATE TABLE talbeName $regxTable = "^[/`/ /"]{ }[/_a zA Z]+[/_a zA Z ]*[/`/ /"]{ }$";//處理表名的正則表達式 $regxLeftWall = "^[/`/ /"]{ }"; $sqlFlagTree = array( "CREATE" => array( "TABLE" => array( "$regxTable" => ) ) "INSERT" => array( "INTO" => array( "$regxTable" => ) ) ); foreach($segment as & $statement) { $tokens = split(" " $statement[ ]); $tableName = array(); $this >findTableName($sqlFlagTree $tokens $tableName); if(empty($tableName[ leftWall ])) { $newTableName = $prefix $tableName[ name ]; } else{ $newTableName = $tableName[ leftWall ] $prefix substr($tableName[ name ] ); } $statement[ ] = str_replace($tableName[ name ] $newTableName $statement[ ]); } } //組合sql語句 foreach($segment as & $statement) { $newStmt = ; foreach($statement as $sentence) { $newStmt = $newStmt trim($sentence) "/n"; } $statement = $newStmt; } //用於測試 //var_mp($segment); //writeArrayToFile( data txt $segment); // self::saveByQuery($segment); return true; } private function saveByQuery($sqlArray) { $conn = mysql_connect($this >dbHost $this >dbUser $this >dbPassword); mysql_select_db($this >dbSchema); foreach($sqlArray as $sql) { mysql_query($sql); } mysql_close($conn); } private function findTableName($sqlFlagTree $tokens $tokensKey= & $tableName = array()) { $regxLeftWall = "^[/`/ /"]{ }"; if(count($tokens)<=$tokensKey) return false; if( == trim($tokens[$tokensKey])) { return self::findTableName($sqlFlagTree $tokens $tokensKey+ $tableName); } else { foreach($sqlFlagTree as $flag => $v) { if(eregi($flag $tokens[$tokensKey])) { if( ==$v) { $tableName[ name ] = $tokens[$tokensKey]; if(eregi($regxLeftWall $tableName[ name ])) { $tableName[ leftWall ] = $tableName[ name ]{ }; } return true; } else{ return self::findTableName($v $tokens $tokensKey+ & $tableName); } } } } return false; } } function writeArrayToFile($fileName $dataArray $delimiter="/r/n") { $handle=fopen($fileName "wb"); $text = ; foreach($dataArray as $data) { $text = $text $data $delimiter; } fwrite($handle $text); } //測試 $dbM = new DBManager( localhost w f test ); $dbM >createFromFile( data sql null fff_ ); ?> lishixin/Article/program/PHP/201311/21281

⑥ php怎麼運行

如果大家是本地測試php代碼的,大家可以用一些工具例如phpstudy等(phpstudy安裝使用比較簡單,安裝以後將php文件復制到安裝目錄下的www目錄中,在瀏覽器中輸入http://127.0.0.1/php文件即可,如果選擇了埠需要加入埠(http://127.0.0.1:埠號)。如果架設好了php運行環境,在瀏覽器中輸入網址,就可以看到php的運行效果。
PHP,是英文超級文本預處理語言HypertextPreprocessor的縮寫。PHP是一種HTML內嵌式的語言,是一種在伺服器端執行的嵌入HTML文檔的腳本語言,語言的風格有類似於C語言,被廣泛的運用。php就是網路上大家常說的後台,用來處理資料庫等,很多網站都是用php寫的,包括www..com,www.php.cn等網站,都是使用php語言寫的。我們的文章都是通過php代碼上傳到伺服器資料庫中,然後通過php代碼生成靜態的。php文件如何打開:簡單一碧燃枝句話php跟txt(文本文檔)一樣,記事悔敏本就可以打開,但看到的就是代碼,而不是php執行後的效果了,例如我們打開test.php代碼因為編碼有gbk或utf8格式的,用記事本打開utf8格式段態的php文件時,當有中文的時間就是出現亂碼,所以我們建議用notepad或editplus等支持utf8格式文件的軟體打開。(普通用戶選擇notepad打開即可,因為notepad比較小)。

熱點內容
內置存儲卡可以拆嗎 發布:2025-05-18 04:16:35 瀏覽:333
編譯原理課時設置 發布:2025-05-18 04:13:28 瀏覽:376
linux中進入ip地址伺服器 發布:2025-05-18 04:11:21 瀏覽:610
java用什麼軟體寫 發布:2025-05-18 03:56:19 瀏覽:31
linux配置vim編譯c 發布:2025-05-18 03:55:07 瀏覽:107
砸百鬼腳本 發布:2025-05-18 03:53:34 瀏覽:941
安卓手機如何拍視頻和蘋果一樣 發布:2025-05-18 03:40:47 瀏覽:739
為什麼安卓手機連不上蘋果7熱點 發布:2025-05-18 03:40:13 瀏覽:802
網卡訪問 發布:2025-05-18 03:35:04 瀏覽:510
接收和發送伺服器地址 發布:2025-05-18 03:33:48 瀏覽:371