Ocsigenで私のpythonファイルを実行できないのはなぜですか?

設定ファイルtest.confは以下の通りです:



*:8000

/home/zaxis/tmp/log/
/home/zaxis/tmp/data
zaxis
wheel
utf-8
......

  



......

    
    

....
/home/zaxis/tmp/ocsigen_command


その後、私はOcsigenを実行します:

ocsigeocsigen -c test.conf

http://127.0.0.1:8000/qachina/index.htm にアクセスできます。しかし、Ocsigenは私のpythonスクリプトをcgi-binで実行しませんが、ブラウザはそれをダウンロードします。

ところで、すべてのpythonスクリプトファイルは、シェルで直接実行することができます。

>head cgi-bin/nav.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-enter code here
...

私はOcsigenのメーリングリストにアクセスすることができないので、私はここに提案を投稿しています。

4
"私はocsigenのメーリングリストを訪問することはできません..."。何?どうして?
追加された 著者 gasche,
よくわかりません。 ocsigen はOCaml中心のシステムではありませんか?なぜそれは任意のPythonコードを実行することができるだろうか?
追加された 著者 Gian,
はマークダウンの成果物ですか、それともソースファイルに実際にどのように表示されるのでしょうか?実際に後者であれば、それが整形式XMLであるとは想像できません。
追加された 著者 Gian,
@Gian:CGIはCommon Gateway Interfaceです。これは、Webサーバーがスクリプトを実行し、標準的な方法でそれらと通信する方法です。 Webサーバーはコードを直接実行するのではなく、代わりにexecを使用してプログラムまたはスクリプトを通信できる別のプロセスで実行するため、完全に独立しています。 Ocsigen + CGImodがPythonやその他の言語で記述されたスクリプトを実行してはならない理由はありません。
追加された 著者 Keith Irwin,

4 答え

For each request on a site, Ocsigen tries the extensions listed in the order of the configuration file. In your case, it tries staticmod, which succeeds, since cgi-bin is a directory existing in the directory given to staticmod. If you want cgimod to be tried first, you should put before .

5
追加された
私は命令を変えましたが、まだ効くことはありません。
追加された 著者 z_axis,

Ocsigenのバージョンは何ですか?

私はちょうどocsigen 1.3.4(現在のDebianテスト版)で試してみましたが、あなたの設定スニペットにバグ(Ocsigen側)があるようです。あなたが望むものは、次のもので達成できます:


私はアクセスしているすべての実行中のOcsigenのインスタンスをチェックしており、すべてが "regexp"属性を使用しています。しかし、ドキュメントはあなたのバージョンを許可し、サーバはそれを受け入れます。これらの2つの選択肢の1つがバグです。

FYIでは、 -V オプションを指定してocsigenを実行すると助けになりました。

4
追加された
Firefoxは私に今Pythonスクリプトをダウンロードさせたくありません。しかし、ocsigenは、Pythonスクリプトを実行しているときに "Internal Server Error 500"を報告します。
追加された 著者 z_axis,

私はそれが働くべきであるように私に見えるので、固い答えを知らないが、私は役に立つかもしれないいくつかの質問があります。

When you get prompted to download, have you actually downloaded it? If so, are you downloading the web page which would result from the script or are you downloading the script itself? If it's the former, then it's just a mime-type issue of some sort. If it's the later, it sounds more likely to be a problem with the static module serving the page rather than the CGI one. Have you tried removing the to see if this is conflicting?

2
追加された
それはスクリプト自体をダウンロードしています。 "
追加された 著者 z_axis,
>cat /usr/ports/www/ocsigen/Makefile |grep -i version 
PORTVERSION=    1.1.0
>ocsigen -c test.conf -V
[warnings.log] 2011-11-28 08:25:47 - Exception while creating IPv6 socket: Invalid argument in function bind ()
-- Dependencies of ocsigen_ext.redirectmod: ocsigen_ext.redirectmod
-- Needed: /usr/local/lib/ocsigen/extensions/redirectmod.cmo
Loading extension /usr/local/lib/ocsigen/extensions/redirectmod.cmo
-- Dependencies of ocsigen_ext.cgimod: ocsigen_ext.cgimod
-- Needed: /usr/local/lib/ocsigen/extensions/cgimod.cmo
Loading extension /usr/local/lib/ocsigen/extensions/cgimod.cmo
-- Dependencies of ocsigen_ext.staticmod: ocsigen_ext.staticmod
-- Needed: /usr/local/lib/ocsigen/extensions/staticmod.cmo
Loading extension /usr/local/lib/ocsigen/extensions/staticmod.cmo
-- Dependencies of ocsigen_ext.ocsipersist-sqlite: sqlite3, ocsigen_ext.ocsipersist sqlite
-- Needed: /usr/local/lib/ocaml/site-lib/sqlite3/sqlite3.cma, /usr/local/lib/ocsigen/   extensions/ocsipersist-sqlite.cma
Loading extension /usr/local/lib/ocaml/site-lib/sqlite3/sqlite3.cma
Loading extension /usr/local/lib/ocsigen/extensions/ocsipersist-sqlite.cma
-- Dependencies of ocsigen_ext.eliom: num.core, num, cryptokit, ocsigen_ext.eliom
-- Needed: /usr/local/lib/ocaml/nums.cma, /usr/local/lib/ocaml/site-lib/cryptokit cryptokit.cma, /usr/local/lib/ocsigen/extensions/eliom.cma
Loading extension /usr/local/lib/ocaml/nums.cma
Loading extension /usr/local/lib/ocaml/site-lib/cryptokit/cryptokit.cma
Loading extension /usr/local/lib/ocsigen/extensions/eliom.cma
[warnings.log] 2011-11-28 08:25:47 - While parsing config file, tag : Assuming defaulthostname is "localhost"
-- Dependencies of eliom_examples.miniwiki: eliom_examples.miniwiki
-- Needed: /usr/local/lib/ocsigen/examples/miniwiki.cmo
Loading /usr/local/lib/ocsigen/examples/miniwiki.cmo (will be reloaded every times)
-- Dependencies of eliom_examples.tutoeliom: eliom_examples.tutoeliom
-- Needed: /usr/local/lib/ocsigen/examples/tutoeliom.cmo
Loading /usr/local/lib/ocsigen/examples/tutoeliom.cmo (will be reloaded every times)
[warnings.log] 2011-11-28 08:25:47 - Reloading config file
...
[warnings.log] 2011-11-28 08:25:47 - Config file reloaded
[warnings.log] 2011-11-28 08:25:47 - Ocsigen has been launched (initialisations ok)

http:// localhost:8000/qachina/cgi-bin/nav.py < a> Operaを使って:

GET /qachina/cgi-bin/nav.py HTTP/1.1
User-Agent: Opera/9.80 (X11; FreeBSD 8.2-RELEASE i386; U; zh-cn) Presto/2.9.168 Version/11.50
Host: localhost:8000
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Accept-Encoding: gzip, deflate
Cache-Control: no-cache
Connection: Keep-Alive

- host=localhost
[access.log] 2011-11-28 08:42:06 - connection for localhost from 127.0.0.1 (Opera/9.80 (X11; FreeBSD 8.2-RELEASE i386; U; zh-cn) Presto/2.9.168 Version/11.50): /qachina/cgi-bin/nav.py
-------- host found! localhost:8000 matches * 
site "ocsigenstuff" does not match url "qachina/cgi-bin/nav.py".
site "miniwiki" does not match url "qachina/cgi-bin/nav.py".
-------- site found: url "qachina/cgi-bin/nav.py" matches "qachina".
--Cgimod: Is it a cgi file?
--Cgimod: Testing "/media/E/www/qachina/cgi-bin/nav.py".
--Cgimod: Looking for "/media/E/www/qachina/cgi-bin/nav.py".
** Receiving HTTP message
[warnings.log] 2011-11-28 08:42:06 - CGI says: env: python: No such file or directory
Thread 10 killed on uncaught exception Invalid_argument("index out of bounds")
[warnings.log] 2011-11-28 08:42:06 - CGI exited with code 127
~~~ Exception during generation/sending: Ocsigen_http_com.Connection_closed

[warnings.log] 2011-11-28 08:42:06 - Exn during page generation: Ocsigen_http_com.Connection_closed (sending 500) -> Sending 500 ...

Pythonファイルごとに#!/ usr/bin/env python #!/ usr/local/bin/python に変更した後は、今すぐ動作するようです!

ありがとう!

1
追加された
バージョン1.1.0はかなり古くなっています...バージョン2以上の使用を検討してください。また、ポートをアップグレードするよう依頼してください。 1.3.xにアップグレードするのはあまり複雑ではありません。バージョン2.xは少し異なります。しかし、パッケージング。
追加された 著者 Stéphane Glondu,