此部分为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