我的'controller.py'脚本
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
def application(environ, start_response):
# the ouput string to respuesta var
respuesta = "<p>Página web construida con <strong>Python!!!</strong></p>"
# generating the response OK
start_response('200 OK', [('Content-Type', 'text/html; charset=utf-8')])
return respuesta
在'error.log'中:
[Mon Mar 13 12:36:32.656669 2017] [wsgi:error] [pid 28767:tid 139926041507584] [client 127.0.0.1:56382] mod_wsgi(pid = 28767): 处理WSGI脚本时发生异常 '/var/www/python/app/controller.py'。 [Mon Mar 13 12:36:32.656761 2017]
[wsgi:error] [pid 28767:tid 139926041507584] [client 127.0.0.1:56382] TypeError:期望的字节字符串值序列,str类型的值 发现ubuntu @ ip- - - - :/ var / www / python / logs $ TypeError: 期望的字节串值序列,str类型的值
我已阅读this questions,但答案无效。
我的site.conf
<VirtualHost *:80>
ServerName app.salvaj.es
ServerAdmin salvajgb@salvaj.es
DocumentRoot /var/www/python/static
WSGIScriptAlias / /var/www/python/app/controller.py
ErrorLog /var/www/python/logs/error.log
CustomLog /var/www/python/logs/access.log combined
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/python/static>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
</VirtualHost>
答案 0 :(得分:2)
你做错了两件事。
首先,响应必须是可迭代的字节,而不是Unicode。
第二个是你要返回一个字符串,而不是一个字符串列表。后者会使您的代码效率非常低,因为一次发回一个字符。
使用:
$con = mysqli_connect("localhost","username","password","dbname");
$name2=$_POST['name1'];
$email2=$_POST['email1'];
$password2=$_POST['password1'];
$query = mysqli_query($con, "insert into `users-form` (name, email, password) values ('$name2', '$email2', '$password2')");
if ($query) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($con);
}
更好的是,不要自己从头开始编写WSGI应用程序,使用像Flask这样的Web框架,因为它会为您处理所有这些细节。