phpexe執行
❶ php執行本地的exe程序,是如何做的
可以去查手冊的的。system()exec()
好比說你要進行資料庫備份就可用系統命令哦。
$str=date("YmdHis");
if($CONFIG->dbuser==""){$dbuser="";}else{$dbuser=" -u ".$CONFIG->dbuser." ";}
if($CONFIG->dbpass==""){$dbpass="";}else{$dbpass=" -p".$CONFIG->dbpass." ";}
exec($path->mysqldir."/mysqlmp ".$dbuser." ".$dbpass." ".$CONFIG->dbname." > ".$path->backupdbdir."/".$str.$SAS_SESSION[userlogin][uloginid].".sql");
Header("Location:backupdb.php"); exit;
如果你要掉別的exe就要把它的絕對路徑寫完全,而且還有該exe的執行許可權
❷ 怎麼php.exe 執行php文件
當然出不來了,因為你的test.php寫的代碼里就沒有輸出代碼。
<?php
$fp = fopen("test.txt", "a+");打開test.txt文件,模式為追加
fwrite($fp, date("Y-m-d H:i:s") . " 成功成功了!\n");寫入文件
fclose($fp);關閉文件
?>
❸ 如何使用php.exe來執行php文件
將php.exe 假如全局變數,
在命令行中,直接輸入 :php 文件名 就可以了 ,如這樣
❹ php執行本地的exe程序,是如何做的
1、exec()和system()函數都可以做到這一點,system()可以定義輸入和輸出
2、比如命令行notepad c:\my.txt會導致彈出一個窗口(默認設定有程序窗口提示音「dang」)詢問你是否創建my.txt文件,通過exec('notepad c:\my.txt')你可以聽到這個提示音,證明notepad已經執行,但是無法看到彈出的窗口(被埋沒在web進程中)自然無法創建my.txt文件
3、通常用system()我們可以調用一些系統API修改、獲取一些信息資料,比如過去我曾用它運行ping命令並得到運行結果
4、許可權可能導致執行失敗
❺ 執行php.exe程序cli提示錯誤如何解決
#!/usr/local/bin/php –q
<?php
//Windows平台上,上行應該為:#!C:\php\php.exe -q
echo "你好 PHP CLI!";
?>
不要忘了給該文件設置為可執行的許可權:
$ chmod 755 myfile.php
然後直接輸入以下命令,按回車鍵即可以運行:
$ ./myfile.php
如果要在Windows系統下運行該腳本,則不需要設置文件屬性,
可以直接運行該腳本。
Microsoft Windows [版本 6.0.6000]
版權所有 (C) 2006 Microsoft Corporation。保留所有權利。
C:\ >myfile.php
你好 PHP CLI!
再重申一次:如果在Windows平台,CLI腳本的第一行一定要寫正確php.exe所在的位置,像這樣(另外,如果要在CLI腳本中加註釋語句,則要把注釋寫在PHP標簽裡面,因為CLI解釋只認識第一行,不在PHP標簽里認為是語法錯誤):
#!C:\php\php.exe -q
這樣,可以看到在命令行下信息已經列印出來,證明該CLI腳本已經成功運行。
2.從命令行上讀取參數
如果想從命令行獲取參數,CLI可以從$_SERVER['argc']和$_SERVER['argv'']取得參數的個數和值。我們再建立一個文件,名字為testargs.php,腳本代碼如下:
#!C:\php\php.exe –q
<?php
//UNIX和Linux平台下應該為#!/usr/local/bin/php –q
echo "測試獲取參數:\n";
echo $_SERVER["argc"]."\n";
//顯示傳入的參數值,從索引1開始顯示
echo $_SERVER["argv"][1]."\n";
echo $_SERVER["argv"][2]."\n";
echo $_SERVER["argv"][3]."\n";
echo $_SERVER["argv"][4]."\n";
?>
在命令行輸入如下代碼:
C:\Users\John>testargs.php Always To Be Best
測試獲取參數:
4
Always
To
Be
Best
因為我們輸入了一串單詞,為「Always To Be Best」,腳本參數以空格分隔。因此,PHP將其計為4個參數,下面對此說明。
$_SERVER["argc"]數組返回一個整型的數,代表從命令行上回車後一共輸入了幾個參數。
從上例的結果已經看出,要訪問已經傳入的參數值,需要從索引1開始。因為腳本本身的文件已經佔用了索引0,即$_SERVER["argv"][0]。
3.處理I/O通道
PHP最初設計不是用於與用戶直接的鍵盤輸入或文本輸出結合使用。了解這一設計是至關重要的,因為如果需要在命令行中執行任何操作,都必須能夠與用戶來回通信。
輸入輸出(I/O)通道這個思想來源於UNIX系統,UNIX系統提供3個文件句柄,用以從一個應用程序及用戶終端發送和接收數據。
我們可以把一個腳本的輸出重定向到一個文件:
php world.php > outputfile
如果是在UNIX系統下,也可以使用通道定向到另一個命令或應用程序中。例如:
php world.php | sort.
在PHP 5 CLI中,有一個文件流句柄,可以使用3個系統常量,分別為STDIN、STDOUT和STDERR。下面我們分別介紹。
(1)STDIN
STDIN全稱為standard in或standard input,標准輸入可以從終端取得任何數據。
格式:stdin (』php://stdin』)
下面的例子是顯示用戶輸入:
#!/usr/local/bin/php -q
<?php
$file = file_get_contents("php://stdin", "r");
echo $file;
?>
這段代碼的工作原理與cat命令很相似,回轉提供給它的所有輸入。但是,這時它還不能接收參數。
STDIN是PHP的標准輸入設備,利用它,CLI PHP腳本可以做更多的事情。如下面例子:
#!/usr/local/bin/php -q
<?php
//UNIX平台下第一行應該為#!/usr/bin/php –q
/* 如果STDIN未定義,將新定義一個STDIN輸入流 */
if(!defined("STDIN")) {
define("STDIN", fopen('php://stdin','r'))
}
echo "你好!你叫什麼名字(請輸入):\n";
$strName = fread(STDIN, 100); //從一個新行讀入80個字元
echo '歡迎你'.$strName."\n";
?>
該腳本執行後將顯示:
你好!你叫什麼名字(請輸入):
比如,輸入Raymond之後,將顯示:
歡迎你Raymond
(2)STDOUT
STDOUT全稱為standard out或standard output,標准輸出可以直接輸出到屏幕(也可以輸出到其他程序,使用STDIN取得),如果在PHP CLI模式里使用print或echo語句,則這些數據將發送到STDOUT。
格式:stdout (』php://stdout』)
我們還可以使用PHP函數進行數據流輸出。如下面例子:
#!/usr/local/bin/php –q
<?php
$STDOUT = fopen('php://stdout', 'w');
fwrite($STDOUT,"Hello World");
fclose($STDOUT);
?>
輸出結果如下:
Hello World
例如,echo和print命令列印到標准輸出。
#!/usr/local/bin/php –q
Output #1.
<?php
echo "Output #2.";
print "Output #3."
?>
這將得到:
Output #1.
Output #2.Output #3.
說明:PHP標記外的新行已被輸出,但是echo命令或print命令中沒有指示換行。事實上,命令提示符重新出現在Output #2.Output #3. 所在的行中。PHP擁有的任何其他列印函數將會像此函數一樣運行正常,任何寫迴文件的函數也是一樣的。
#!/usr/local/bin/php -q
<?php
$STDOUT = fopen("php://stdout", "w");
fwrite($STDOUT, "Output #1.");
fclose($STDOUT);
?>
以上代碼將把php://stdout作為輸出通道顯式打開,並且php://output通常以與php://stdout相同的方法運行。
(3)STDERR
STDERR全稱為standard error,在默認情況下會直接發送至用戶終端,當使用STDIN文件句柄從其他應用程序沒有讀取到數據時會生成一個「stdin.stderr」。
格式:stderr (』php://stderr』)
下面的腳本表示如何把一行文本輸出到錯誤流中。
#!/usr/local/bin/php –q
<?php
$STDERR = fopen('php://stderr', 'w');
fwrite($STDERR,"There was an Error");
fclose($STDERR);
?>
PHP 5.2可以直接使用STDOUT作為常量,而不是定義上面使用的變數$STDOUT,為了兼容之前版本,我們仍使用了自定義變數,如果您使用的是PHP 5.2,則可以參考STDIN的第二個例子。
4.後台運行CLI
如果正在運行一個進程,而且在退出賬戶時該進程還不會結束,即在系統後台或背景下運行,那麼就可以使用nohup命令。該命令可以在退出賬戶之後繼續運行相應的進程。
nohup在英文中就是不掛起的意思(no hang up)。該命令的一般形式為:
nohup –f scriptname.php &
使用nohup命令提交作業,在默認情況下該作業的所有輸出都被重定向到一個名為nohup.out的文件中,除非另外指定了輸出文件。
nohup scriptname.php > log.txt &
這樣,PHP CLI腳本執行後的結果將輸出到log.txt中,我們可以使用tail命令查看該內容:
tail -n50 -f log.txt
現在再來實現兩個例子,第一個是每隔10分鍾自動生成一個靜態HTML文件,並一直執行下去。腳本代碼如下:
#! /usr/local/bin/php
<?php
set_time_limit(0);
while(true){
@fopen("/usr/local/www/data-dist/content/
article_".time().".html","w");
sleep(600);
}
?>
保存並且退出vi編輯器,然後賦予genHTML.php文件可執行許可權:
#>chmod 755 genHTML.php
然後讓腳本在後台執行,執行如下命令:
$nohup genHTML.php –f &
執行上述命令後出現如下提示:
[1] 16623
按回車鍵後將出現shell提示符。上面的提示就是說,所有命令執行的輸出信息都會放到nohup.out文件中。
執行上面命令後,每隔10分鍾就會在指定的目錄生成指定的HTML文件,如article_111990120.html等文件。
如何終止CLI程序的後台運行呢?
可以使用kill命令來終止這個進程,終止進程之前要知道進程的PID號,即進程ID,我們使用ps命令:
www# ps
PID TT STAT TIME COMMAND
561 v0 Is+ 0:00.00 /usr/libexec/getty Pc ttyv0
562 v1 Is+ 0:00.00 /usr/libexec/getty Pc ttyv1
563 v2 Is+ 0:00.00 /usr/libexec/getty Pc ttyv2
564 v3 Is+ 0:00.00 /usr/libexec/getty Pc ttyv3
565 v4 Is+ 0:00.00 /usr/libexec/getty Pc ttyv4
566 v5 Is+ 0:00.00 /usr/libexec/getty Pc ttyv5
567 v6 Is+ 0:00.00 /usr/libexec/getty Pc ttyv6
568 v7 Is+ 0:00.00 /usr/libexec/getty Pc ttyv7
16180 p0 I 0:00.01 su
16181 p0 S 0:00.06 _su (csh)
16695 p0 R+ 0:00.00 ps
16623 p0 S 0:00.06 /usr/local/bin/php /usr/local/www/data/genHTML.php
已經看到PHP的進程ID是:16623,於是再執行kill命令:
$ kill -9 16623
[1]+ Killed nohup /usr/local/www/data/genHTML.php
這時該命令的進程就已經被終止了,再使用ps命令:
$ ps
PID TT STAT TIME COMMAND
82374 p3 Ss 0:00.17 -bash (bash)
82535 p3 R+ 0:00.00 ps
剛才的PHP CLI腳本已經沒有了,如果直接運行ps命令無法看到進程,那麼就結合使用ps & apos兩個命令來查看。
注意:上面例子必須運行在UNIX或者Linux系統中,如FreeBSD、Redhat Linux等,在Windows環境不支持nohup命令。
❻ 到哪兒去找php.exe
默認在PHP主目錄下,如果找不到:1,看你裝在哪個盤區;2,到官方站點下完整的。
PHP(PHP: Hypertext Preprocessor)即「超文本預處理器」,是在伺服器端執行的腳本語言,尤其適用於Web開發並可嵌入HTML中。
PHP語法學習了C語言,吸納java和Perl多個語言的特色發展出自己的特色語法,並根據它們的長項持續改進提升自己,例如java的面向對象編程,該語言當初創建的主要目標是讓開發人員快速編寫出優質的web網站。PHP同時支持面向對象和面向過程的開發,使用上非常靈活。
經過二十多年的發展,隨著php-cli相關組件的快速發展和完善,PHP已經可以應用在TCP/UDP服務、高性能Web、WebSocket服務、物聯網、實時通訊、游戲、微服務等非 Web 領域的系統研發。
根據W3Techs2019年12月6號發布的統計數據,PHP在WEB網站伺服器端使用的編程語言所佔份額高達78.9%。在內容管理系統的網站中,有58.7%的網站使用WordPress(PHP開發的CMS系統),這占所有網站的25.0%。
開源免費
PHP是一個受眾大並且擁有眾多開發者的開源軟體項目,Linux + Nginx + Mysql + PHP是它的經典安裝部署方式,相關的軟體全部都是開源免費的,所以使用PHP可以節約大量的正版授權費用。
不過PHP作為一個開源軟體,它缺乏大型科技公司的支持背景,網路上對它的唱衰也是經久不衰,不過它的持續迭代和性能持續增強的現實卻是鼓舞人心的,PHP社區用實際行動給予各種質疑強有力的回擊。
❼ php調用exe問題
PHP裡面exec其它命令可以成功執行,而調用特定的程序沒有成功,我推測有三個方面的原因:
一是APACHE的進程(估計是httpd.exe)身份與你命令行執行的是否相同,可以在進程管理器裡面查看。
二是環境不同,你的julia是否需要某些特定環境變數支持,PHP執行的時候這些環境變數是否都有,可以在PHPINFO()裡面查看。
三是相對路徑不同,命令行下執行時系統查找文件的環境不同,試試看這樣寫:
exec(" julia 12.jl");
修改為:
exec("c:\\julia\\julia.exe d:\\jl\\12.jl");
此外,你的調試信息顯示stderr異常,是否julia必須依賴stderr。還有,julia是CONSOLE環境還是GUI程序,如果是CONSOLE的,能否使用-?或者-v參數顯示簡單信息,用以測試調用julia是否成功,例如你的julia支持julia -version顯示版本號,那麼你可以在PHP裡面這樣寫:
exec(" julia -version");
查看命令行和瀏覽器裡面的效果。
❽ 聽說php可以實現網頁運行exe程序,具體怎麼實現的
用exec 函數,用法見此: http://cn.php.net/manual/zh/function.exec.php 如果這個滿足不了你的要求,你可以在上面查查相關的函數,有很多的。一段中文說明:函數:exec() 程序執行功能函數庫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.exe 執行到某個語句暫停,然後等待賦值。在命令框中賦值後,程序繼續進行。這個php語句怎麼寫
你指的應該是php的命令行模式吧!
命令行模式中提供了一個標准輸入常量 STDIN 其實他是資源類型。
下面的是一個簡單的例子供你參考
<?php
echo"Pleaseenteryourname! ";
$input=trim(fgets(STDIN));
echo"Yournameis{$input}";
?>
❿ php執行exe
不可以,php沒有這個能力