此部分爲xampp和NetBeans
1、https://www.apachefriends.org/zh_cn/index.html頁面下載XAMPP,安裝位於D盤
2、打開XAMPP Control Panel,然後打開此鏈接https://blog.csdn.net/aoshilang2249/article/details/46934419
針對情況修改(tips最好不要修改,不然後面出現錯誤)
3、然後依次點擊Apache、MySq最前面service、start,啓動服務器、數據庫。數據庫啓動不成功,很可能是電腦裏面另外安裝的數據庫A佔用了xampp裏數據庫B的端口,此時手動關掉A
(右點我的電腦,選擇管理/服務與應用程序/服務)
4、修改NetBeans的配置,工具/選項/常規 選擇右上角PHP,下方會讓你選擇php解釋器,選擇剛安裝路徑D:\xampp\php\php.exe,成功
5、還有一點需要特別注意:
此時新建的項目文件路徑爲D:\xampp\htdocs\PhpProject2,理論上不能更改,涉及訪問(我還沒嘗試過)
6、對於手機:
內網可通過類似http://localhost/PhpProject1/index.php同樣能訪問,將localhost改爲IP(10.30.30.171)
外網暫時還沒研究,待定
7、對於項目中有MySQL交互的,一定要配置好與數據庫的鏈接,通過Xammp control panel界面右邊的shell可進入cmd與mysql進行交互。
mysql -uroot -ppassword
use mysql;
show databases;
show tables;(單詞別寫錯了)
select * from tablename;
8、xampp PHPmyadmin自增主鍵的地方位於:結構/修改列名裏 點進去有一個選項A_I打上勾就行,鏈接 https://www.jianshu.com/p/488bff53e8ca
9、netbeans下PHP調用python失敗的原因
1)python安裝配置可能出錯 需install for all users(安裝好了以後如何查看)
2) apache裏php.ini裏安全配置有可能出錯
3)可通過在PHP調用函數里加代碼,讓出錯原因顯示出來
最後發現失敗原因:$out = system(" python D:/xampp/htdocs/PhpProject1/test.py 2>&1 $a $b",$states);
//千萬不要寫成D:\xampp\htdocs\PhpProject1類似語法,這個搞了一天 有毒!
兩種表示路徑有什麼區別??可研究一下
10、關於system和exec的輸出問題
1)$out=system():
$out = system()
print_r($states);
print_r($out);
輸出:58 0 58
2)system():
system()
print_r($states);
58 0
3)exec():
exec(" python D:/xampp/htdocs/PhpProject1/test.py 2>&1 $a $b",$out,$states);
print_r($states);
print_r($out);
0 Array ( [0] => 58 )Array爲json格式
4)$out=exec()
$out=exec(" python D:/xampp/htdocs/PhpProject1/test.py 2>&1 $a $b",$states);
print_r($states);
print_r($out);
Array ( [0] => 58 ) 58 (注意此時兩者同爲輸出值,但是格式不同)
11、很重要的一點,調試時,file = sys.argv[1]
data = ke.new_data(file+'.wav')
當路徑作爲參數傳過來時,file兩邊不用加雙引號!不然會出bug
12、如何把php界面的值傳給另一個php頁面參考:http://blog.sina.com.cn/s/blog_906a5acc0100xq9k.html
13、一定要學會看服務器的Logs,特別是Apache(erorr.logs),有服務器運行錯誤的原因
14、Ajax的POST中,index.php 中的Ajax的responseText就是save.php(system方法傳入參數給Python文件時)中所有的echo輸出值
15、將responseText的值顯示在網頁上:
alert(request.responseText);//彈窗顯示結果,可在save.php裏繼續更改顯示文字
//將服務器返回結果插入到id=predicted的標籤裏,還需將結果插入至表單上傳服務器,如何插入?
//https://bbs.csdn.net/topics/110119246
document.all["predicted"].innerHTML=request.responseText;
此部分爲PHP
一個TCP報文除了包含要傳輸的數據外,還包含源IP地址和目標IP地址,源端口和目標端口。
端口有什麼作用?在兩臺計算機通信時,只發IP地址是不夠的,因爲同一臺計算機上跑着多個網絡程序。一個TCP報文來了之後,到底是交給瀏覽器還是QQ,就需要端口號來區分。每個網絡程序都向操作系統申請唯一的端口號,這樣,兩個進程在兩臺計算機之間建立網絡連接就需要各自的IP地址和各自的端口號。
所以application()函數必須由WSGI服務器來調用。有很多符合WSGI規範的服務器,我們可以挑選一個來用。但是現在,我們只想儘快測試一下我們編寫的application()函數真的可以把HTML輸出到瀏覽器,所以,要趕緊找一個最簡單的WSGI服務器,把我們的Web應用程序跑起來。
好消息是Python內置了一個WSGI服務器,這個模塊叫wsgiref,它是用純Python編寫的WSGI服務器的參考實現。
運行WSGI服務
我們先編寫hello.py,實現Web應用程序的WSGI處理函數:
innerHTML在JS是雙向功能:獲取對象的內容 或 向對象插入內容;
如:<div id="demo">這是內容</div> ,我們可以通過 document.getElementById('demo').innerHTML 來獲取id爲aa的對象的內嵌內容;
也可以對某對象插入內容,如 document.getElementById('demo').innerHTML='這是被插入的內容'; 這樣就能向id爲abc的對象插入內容。
document.getElementById("id").value是獲取HTML標籤中id=“id”的value的方法
可能你這裏的id就是表示了這個HTML標籤 應該也有賦值
var id = document.getElementById("id")
這個時候兩者就是一個意思了
id名,主要是爲JS提供的,JS當中,最快獲取標籤的方式,就是通過標籤的id名去獲取
表單元素的name的名字,是爲後臺服務的(PHP、JAVA、.NET等),在表單提交時,
後臺通過name來拿到相應表單元素的value值
pathinfo() 函數以數組或字符串的形式返回關於文件路徑的信息。
返回的數組元素如下:
[dirname]:返回文件路徑中的目錄部分
[basename]:返回文件路徑中文件名的部分
[extension]:返回文件路徑中文件的類型的部分
Php調用外部程序(shell、可執行程序等),常用的有三個函數:
一、
string system(string $command [,int &$return_var]):執行、輸出第一個參數的命令,第二個可選參數保存是否執行的狀態
二、
string exec(string $command [, array &$output[, int &$return_var ]]):第一個參數是命令,執行之後,返回執行程序的最後一行;也可以設置第二個數組參數,返回的所有結果將保存在這個數組中;第三個可選參數是保存是否執行成功的狀態
當然,Php調用Python時也是可以向Python傳遞參數的
方法就是在命令後面直接加上字符串或者變量,相當於就是向命令行輸入這些字符串(注意:路徑後和每個變量之間需要有空格)
<?php
$a=10;
$b=20;
system("draft.py $a $b");
?>
而在Pyhon中,也有接收命令行參數的方法:sys.argv[]
sys.argv[0]是Python文件存放的路徑,之後就是對應的命令行參數了。所以Php中的$a,$b分別對應了Python中的sys.argv[1]、sys.argv[2]:
import sys
print ('a='+sys.argv[1])
print ('b='+sys.argv[2])
<?php
$var = 6;
$var1 = 12;
$l = exec("D:\python3.5\python hah.py $var $var1",$Array,$ret);
//exec($String , $Array , $ret)函數有三個參數,$String 表示執行的語句,這裏不能直接像Linux系統下一樣直接寫"python xx.py"而是需要
//找到python的exe文件的路徑 hah.py後面跟了兩個參數$var和$var1 表示傳給python文件的參數,$Array是json格式的返回集,$ret等於0表示
//執行成功,等於1表示執行失敗。另外!!如果python程序有錯誤的話,php這邊是不會報錯的。
//echo ($l);
echo ($Array);
?>
絕對路徑
比如print的,在這裏我只需要$resultData最後一個輸出:$res=end($resultData);
Python代碼:
import sys
#需要用sys庫來接受php傳過來的兩個參數$var和$var1
filename = sys.argv[0]#文件名
v1 = sys.argv[1]#php傳過來的變量
v2 = sys.argv[2]
r = {filename:"asd" , v1:"asd",v2:"asd"}
print (r)#這裏的輸出到php的變量$Array裏面去了
三、
void passthru(string $command [, int &$return_var]):與system函數比較像,不同的是沒有返回值,而是直接將結果輸出到瀏覽器上
http://www.wingstudio.org/ShowBlog/297