我用delphi+intraweb做了个Apache的so.
但是发布不了.就是Apache server根本启动不起来我的操作步骤:
1.将Project1.so拷贝到modules目录下
2.我的在httpd.conf中添加LoadModule Test_module modules/Project1.so

解决方案 »

  1.   

    http://www.51delphi.com/wz/19.html
    IntraWeb開發學習筆記(五)最近有些朋友來信問到在Apache環境下開發IntraWeb應用程式的問題,因為涉及的內容比較多,每次回復起來特別的麻煩,所以,在這一期學習筆記裏面,我將為大家著重介紹一下在Apache環境下的IntraWeb的開發與發佈問題。
     
    21、IntraWeb的Apache開發問題 
    首先要對Delphi7進行修改,使之適應於Apache.v.2.0.45。Apache的最新版本可在這裏下載。關於Apache的安裝就不多說了,如果機器已經配置了IIS服務,可更改WEB服務埠為8080。安裝完成如果能順利啟動Apache服務的話,在流覽器視窗鍵入http://localhost:8080/index.html.en,如出現說明文件,則說明Apache已經順利啟動了。Apache是一個非常優秀的WEB伺服器軟體,在全球的裝機量據統計占到50%以上,其安全性、可靠性、靈活性及速度均有不凡的表現。Delphi7對Apache提供了完備的支援,不過由於最新版本的Apache對介面進行了修改,所以,需要對Delphi的httpd2.pas檔進行一點修改才成。這個具體的修改過程,Xalion已在其文章《使Delphi 6.0 支持 Apache 2.0》進行了詳細的說明,並且已經提供了修改好的檔下載,點擊這裏下載該修改包,將該包解壓到Delphi7的Lib目錄下,並刪除掉這個三個檔的.dcu,編譯你的程式,則會對這三個檔重新編譯的。1、新建IntraWeb應用,並選擇其中的Apache 2.x Shared Module,則Delphi7會為你自動生成一個框架檔:library Project1; 
    uses
      IWInitApacheTwo,
      ApacheTwoApp,
      ServerController in 'ServerController.pas' {IWServerController:TIWServerControllerBase},
      Unit1 in 'Unit1.pas' {IWForm1: TIWFormModuleBase};{$E so}{$R *.RES}exports
      apache_module name 'IWDSO2Project_module';begin
      IWRun;
    end.{$E so}編譯選項是生成*.so檔,默認的情況下,生成的檔案名為IWDSO2Project_module.so,你也可以根據需要對這個檔案名進行任意的更改。比如,我們將其改為Test_module。2、選擇IWForm1,放入一個IWLabel,並更改其文本屬性為“Apache2演示”。按下Ctrl+F9編譯,在當前目錄下會產生一個Project1.so文件。3、打開Apache安裝目錄下conf\httpd.conf配置檔,找到LoadModule區段,加入如下的語句:LoadModule Test_module "D:/Borland/Delphi7/Projects/Project1.so"LoadModule分兩部分,一是你設定的export的名稱,在這裏是Test_Module,二是生成的物理檔,亦即工程檔案名+".so",可以使用物理路徑,如果不想使用物理路徑,可以Project1.so檔拷貝到Apache安裝目錄下的modules下,並修改其為modules/Project1.so。需要注意的問題有幾點:一是大小寫,二是要將LoadModule語句加入到LoadModule區段的頂部,三是路徑必須是反斜線。4、另外要添加Location內容如下:
    <Location /Test>
      SetHandler Project1-handler
    </Location>
    關於Location你可以設定任意的名稱,需要注意的是SetHandler要設定的處理控制碼必須是Project1,而且是嚴格區分大小寫的。5、重新啟動Apache服務。6、打開流覽器,鍵入http://localhost:8080/Test,Test要保證與Location設定的內容相匹配,則應該可以看得到運行結果。
      

  2.   

    不知道楼主,用的是delphi? intraweb?
      

  3.   

    The requested operation has failed! 错误提示
    测试是can't load .so 这个moudle
    D7 加 iw7.09
      

  4.   

    根据学习笔记5 和使Delphi 6.0 支持 Apache 2.0
    修改拉httpd2.pas 我用的是apache2.2.3 所以把MODULE_MAGIC_NUMBER_MAJOR = 20020628;改为
    MODULE_MAGIC_NUMBER_MAJOR = 20060728;不知是不是这个
    还是版主说述,apache出现The requested operation has failed! error提示好心人快帮助解决问题吧!
      

  5.   

    兄弟,你这个20060728在哪查出来的?怎么查?
    限于本人最近没有使用最新的apache2 所以不知道。
    现在用apache2.0.55
      MODULE_MAGIC_NUMBER_MAJOR = 20020903; { Apache 2.0.55 }
      MODULE_MAGIC_NUMBER_MINOR = 11; {0也可以,奇怪,没太深入研究}
      

  6.   

    我是在這里找的
    http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-3747
    因為e差就檢了一個來
    還有一個是20060720我也試過﹐問題還是一樣﹐
    不能load this module出錯的原因是不是還有其他的原因呢幫幫忙吧!
      

  7.   

    如果是StandAlone模式的話 如何獲得80端口
      

  8.   

    standalone 在ServerController 的port改為80不就是了
      

  9.   

    to nalio: 从文字上看不是20060720,那只是bug编号。
    我找到一个,但不知道版本(估计是2.2X的)大不了换回2.0.55
    MODULE_MAGIC_NUMBER_MAJOR   20060110
    MODULE_MAGIC_NUMBER_MINOR   3
    http://docx.itscales.com/group___a_p_a_c_h_e___c_o_r_e___m_m_n.html
      

  10.   

    最好是下载apache2.2.0x的源代码看看.
    可以搜索的