duangou2046 2014-04-19 07:22
浏览 41
已采纳

Apache的自定义操作/处理程序

OK, so here's my situation :

  • I've written an interpreter (for a language of my own design)
  • I need every file with a specific extension (e.g. .xxx) to be first handled by my interpreter

Here's what I've tried so far (other than... messy solutions with exec via PHP... lol) :

.htaccess

Options -ExecCGI -MultiViews -Includes -Indexes FollowSymLinks

Action lgm-cgi /usr/local/bin/lgm -c
AddHandler lgm-cgi .lgml

But guess what : It's not working.

I'm requesting www.mydomain.com/index.lgml and instead of returning the processed file, it returns the very same file (index.lgml) as text.

What am I doing wrong? Any suggestions?


I don't consider myself anywhere close to an expert regarding server configuration and .htaccess so I suppose this whole thing might be much easier than I expect; so please shed some light! :-)

  • 写回答

1条回答 默认 最新

  • douzhenggui8171 2014-12-01 13:25
    关注

    You have mixed two distinct concepts: handlers and actions. You'd have to write a module to introduce new handler into the httpd server. After that, you'd have to use AddHandler or SetHandler to actually bind it with certain file type and/or URL space.

    You would have to double check your error logs, but I suspect that while serving the .lgml file Apache figured out, that lgm-cgi handler doesn't exist and fell back to default-handler, which served your file as flat text.

    You are correct however, to use Action here as it is appropriate. You just need to use it a bit differently. First, you should introduce a custom type for your file:

    AddType application/lgml .lgml
    

    ...then associate that type with your action:

    Action application/lgml /usr/local/bin/lgm -c
    

    This should work.

    EDIT: As pointed out by kbro, 2nd argument to Action should be a CGI Script. So you'd have to write one (lets say /cgi-bin/lgm-handler.sh) which would call /usr/local/bin/lgm under the hood. Then you would introduce it into the server as such:

    Action application/lgml /cgi-bin/lgm-handler.sh
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥50 potsgresql15备份问题
  • ¥15 Mac系统vs code使用phpstudy如何配置debug来调试php
  • ¥15 目前主流的音乐软件,像网易云音乐,QQ音乐他们的前端和后台部分是用的什么技术实现的?求解!
  • ¥60 pb数据库修改与连接
  • ¥15 spss统计中二分类变量和有序变量的相关性分析可以用kendall相关分析吗?
  • ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
  • ¥20 神经网络Sequential name=sequential, built=False
  • ¥16 Qphython 用xlrd读取excel报错
  • ¥15 单片机学习顺序问题!!
  • ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上