Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Python CGI环境设置?_Php_Python_Apache_Cgi_Development Environment - Fatal编程技术网

Php Python CGI环境设置?

Php Python CGI环境设置?,php,python,apache,cgi,development-environment,Php,Python,Apache,Cgi,Development Environment,我正在用python中的nltk做一个自然语言处理项目。 本项目区块结构如下: php中的接口-> python中的[NLP引擎]-> php中的API调用-> 在php中生成结果 输入应该通过GET方法从PHP接口传递到Python引擎 背景: 我已经使用Easy-PHP-Dev-server-Location=D:\computative\u-linguistics创建了一个虚拟主机url=/language/server。我启用了它,这样它就可以执行Test.py,这样当我键入/Test.

我正在用python中的nltk做一个自然语言处理项目。 本项目区块结构如下:

php中的接口-> python中的[NLP引擎]-> php中的API调用-> 在php中生成结果 输入应该通过GET方法从PHP接口传递到Python引擎

背景:

我已经使用Easy-PHP-Dev-server-Location=D:\computative\u-linguistics创建了一个虚拟主机url=/language/server。我启用了它,这样它就可以执行Test.py,这样当我键入/Test.py时,它就会执行

问题:

基本CGI被成功执行,我可以在Chrome中看到输出。但当我导入另一个模块时,它返回了以下错误:

服务器错误

服务器遇到内部错误,无法完成您的请求

错误消息: 标题前的脚本输出结束:engine.py

如果您认为这是服务器错误,请联系网站管理员

误差500

语言学 Apache/2.4.4 Win32 PHP/5.5.0

当我不导入nltk或任何其他非标准包时,它可以工作

我确实做了websearch来找到解决方案,并且知道我必须设置一些环境变量才能使其工作。 但是,我不知道怎么做

我的代码:

#!C:/Python27/python.exe
import nltk
from nltk import *
import re
import cgi, cgitb

inpt=cgi.FieldStorage() 
str_in = inpt.getvalue('query')

def is_noun (str):
    tags=nltk.pos_tag(nltk.word_tokenize(str))
    for i in tags:
        if i[1][1]=='N' or i[1][1]=='V':                            #Finding out the Nouns and the Verbs.
            print "<h5>%s is a noun.<h5>" %i[0]

is_noun(str_in)

print "Content-type:text/html\r\n\r\n"
print "<html>"
print "<head>"
print "<title>Hello - Second CGI Program</title>"
print "</head>"
print "<body>"
is_noun(str_in)
print "</body>"
print "</html>"

因为我没有得到任何答案,没有责怪任何人!我看了更多的纪录片。正如我在上面的问题陈述中所描述的,只有NLP引擎是用Python编写的。而且,这个问题只存在于CGI环境中。 因此,我的解决办法是:

我修改了engine.py,将输入作为逗号行参数接收,然后对其进行处理。它以精确的格式将处理后的数据返回缓冲流。 我在PHP中使用exec命令来实现这一点

这个项目正在进行中,所以如果有人想看一看,他是最受欢迎的

PS:我仍然不知道那个错误的原因。我确信所有的环境路径都是正确的。所以我把这个答案称为变通办法,而不是解决方案


PP:我回答我自己的问题,所以如果有人有同样的问题,他们可能会考虑这项工作。

< P>问题是,你运行两个名词,第一个发送任何标题。因此,出现了错误

另一个问题是str_in是str,但我认为nltk.pos_标记需要unicode。也就是说,如果使用纯ASCII以外的任何符号,则需要解码str_in值。也就是说,您无论如何都应该这样做,但只有在输入中有这样一个字符时,您才会注意到:

str_in = unicode(inpt.getfirst('query', ''), 'utf-8')
然后,当您打印unicode时,需要将其重新编码:

print "<h5>%s is a noun.<h5>" % i[0].encode('utf-8')
另外,希望这些都是本地使用的,不能从互联网上获得,因为这应该要复杂得多

print "Content-Type: text/html; charset=utf-8"
print