Linux上的PHP卷曲:在Windows上卷曲有什么区别?

时间:2012-03-22 12:09:05

标签: php libcurl ntlm

我正在尝试从Ubuntu Server 11.10运行我的php应用程序。这个应用程序在Windows下的Apache + PHP下工作正常。我有其他应用程序,我可以简单地复制和粘贴在2操作系统之间,它们可以同时工作。

然而,这个使用php库tonic(RESTful webservices)并使我们成为php cURL模块。问题是我没有收到错误消息,因此无法找到问题。

我(必须)使用NTLM身份验证,这是通过AuthenNTLM Apache模块完成的:

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需要获取的所有文件都会覆盖AuthenNTLM身份验证:

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

由于这些文件只是来自同一服务器的cURL的fectehd,因此访问权限可以限制为localhost。

可能的问题是:

  • 对于通过cURL请求的文件,不会覆盖NTLM身份验证(即使设置了AllowOverride All)

  • curl在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身份验证

编辑:

使用来自windows的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>

1 个答案:

答案 0 :(得分:1)

问题是Ubuntu上的默认Apache配置:

Options Indexes FollowSymLinks MultiViews

MultiViews正在将myResource中的request_uri更改为myResource.php。

解决方案:

  • 在.htaccess中禁用MultiView:选项-MultiViews
  • 从默认配置中删除MultiViews
  • 将文件重命名为myResourceClass

我选择了最后一个选项,因为无论配置如何都应该有效,我只有3个这样的文件,因此更改大约需要30秒......