2012-03-22 10 views
0

私はUbuntu Server 11.10からPHPアプリケーションを実行しようとしています。このアプリはWindowsのApache + PHPの下でうまく動作します。私は2つのOSの間に単に&ペーストをコピーすることができる他のアプリケーションを持っており、両方で動作します。LinuxのPHPカール:Windowsのカールの違いは何ですか?

しかし、これはPHPライブラリの強壮剤(RESTful webservices)を使用し、私たちはPHPのcURLモジュールを作ってくれます。問題は私が問題を見つけるのを不可能にするエラーメッセージを取得していないです。

I NTLM認証を使用する(しなければならない)、これはAuthenNTLM Apacheモジュールで行われます。これらのファイルのみなので

order deny,allow 
deny from all 
allow from 127.0.0.1 
Satisfy any 

:カールがAuthenNTLM認証を無効にフェッチする必要が

Order allow,deny 
Allow from all 

PerlAuthenHandler Apache2::AuthenNTLM 

AuthType ntlm 

AuthName "Protected Access" 

require valid-user 

PerlAddVar ntdomain "domainName server" 

PerlSetVar defaultdomain domainName 

PerlSetVar ntlmsemtimeout 2 

PerlSetVar ntlmdebug 1 

PerlSetVar splitdomainprefix 0 

すべてのファイルを同じサーバーからのcURLによってfectehdを実行すると、アクセスはlocalhostに限定することができます。

可能性のある問題は、以下のとおりです。

  • のNTLM認証は、cURLの(AllowOverrideのすべてが設定されているにもかかわらず)

  • カールは、Linux上で動作が異なりますによって要求されたファイルに対して上書きされていない

    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_COOKIE, $strCookie); 
    curl_setopt($ch, CURLOPT_URL, $baseUrl . $queryString); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    
    $html = curl_exec($ch); 
    curl_close($ch); 
    
  • 他?

Apacheのログは言う:[エラー] /myApp/webservice/local/viewList.php

に悪い/ミッシングNTLM /基本認証ヘッダー

しかし、このディレクトリはNTLM認証

をオーバーライドする必要があります

EDIT:

同じリソースにアクセスするための窓からcurlコマンドラインを使用して私が取得:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> 
<html> 
    <head> 
     <title>406 Not Acceptable</title> 
    </head> 
    <body> 
     <h1>Not Acceptable</h1> 
     <p>An appropriate representation of the requested resource /myApp/webservice/myResource could not be found on this server.</p> 
     Available variants: 
     <ul> 
     <li><a href="myResource.php">myResource.php</a> , type application/x-httpd-php</li> 
     </ul> 
     <hr> 
     <address>Apache/2.2.20 (Ubuntu) Server at localhost Port 80</address> 
    </body> 
</html> 
+0

この投稿は[sf]にもっと適していると思います – Lix

答えて

1

問題はUbuntuの上のデフォルトのApacheの設定です:

Options Indexes FollowSymLinks MultiViews 

のMultiViewsはmyResource.phpにmyresourceでからREQUEST_URIを変えています。

ソリューション:.htaccessファイルで

  • 無効のMultiViews:オプション-MultiViews
  • myResourceClass

に一例として、ファイルの名前を変更するデフォルトの設定から

  • をのMultiViewsを削除するため、私は最後のオプションを選択しましたそれは設定にかかわらず動作するはずです。私はそのようなファイルが3つしかないので、変更に約30秒かかりました。