从命令行运行脚本和从exec()运行PHP有什么区别?

Roy*_*Roy 7 php python apache exec nltk

我正在尝试使用PHP中的exec()运行Python脚本.当我使用cmd窗口直接运行它时,我的命令工作正常,但是当我exec()在PHP中运行它时会产生错误.

我的Python脚本使用NTLK来查找专有名词.示例命令:

"C:\Python25\python.exe" "C:\wamp\projects\python\trunk\tests\find_proper_nouns.py" "I went to London this morning" 
Run Code Online (Sandbox Code Playgroud)

[London]从我运行它时返回cmd,但是当我运行相同的命令时,在Apache日志中抛出一个错误exec().脚本正在运行正常 - 如果我更改python脚本,print "Hello World"那就返回正常了.

我知道任何人都知道如何解决这个NLTK错误是一个很大的问题,但我真的可以做任何指针,为什么运行它exec是不同的cmd.(命令相同).

我正在使用Apache 2.2.11在Windows 7上运行WAMP.

这是Apache日志中的错误:

Traceback (most recent call last):
  File "C:\wamp\projects\python\trunk\tests\find_proper_nouns_command_line.py", line 6, in <module>
    parts = nltk.pos_tag(text)
  File "C:\Python25\lib\site-packages\nltk\tag\__init__.py", line 62, in pos_tag
    tagger = nltk.data.load(_POS_TAGGER)
  File "C:\Python25\lib\site-packages\nltk\data.py", line 590, in load
    resource_val = pickle.load(_open(resource_url))
  File "C:\Python25\lib\site-packages\nltk\data.py", line 669, in _open
    return find(path).open()
  File "C:\Python25\lib\site-packages\nltk\data.py", line 451, in find
    raise LookupError(resource_not_found)
LookupError: 
**********************************************************************
  Resource 'taggers/maxent_treebank_pos_tagger/english.pickle' not
  found.  Please use the NLTK Downloader to obtain the resource:
  >>> nltk.download().
  Searched in:
    - 'C:\\nltk_data'
    - 'D:\\nltk_data'
    - 'E:\\nltk_data'
    - 'C:\\Python25\\nltk_data'
    - 'C:\\Python25\\lib\\nltk_data'
    - 'C:\\Windows\\system32\\config\\systemprofile\\AppData\\Roaming\\nltk_data'
**********************************************************************
Run Code Online (Sandbox Code Playgroud)

小智 31

你必须运行nltk.download()并选择'maxent_treebank_pos_tagger'.你必须制作一个python脚本并在其中放置:

#!/usr/bin/python
import nltk
nltk.download('maxent_treebank_pos_tagger');
Run Code Online (Sandbox Code Playgroud)

然后从命令行运行它.它将安装尚未安装的POS标记的数据文件.

你这样做后应该工作.


jan*_*sen 2

您的网络服务器可能以除您之外的其他权限运行。可能的问题包括:

\n\n
    \n
  • 路径/文件权限:Web服务器用户是否可以访问其需要的文件?
  • \n
  • 不同的环境:是否设置了所有必要的环境变量(PATH、Python 特定的东西、\xe2\x80\xa6)?
  • \n
  • 配置:Python 或模块是否有针对每个用户的配置?
  • \n
\n\n

提示:set在命令提示符和 PHP 进程中执行并检查差异。

\n