Reputation: 7622
I'm trying to run my php App from Ubuntu Server 11.10. This App works fine under Apache + PHP in windows. I have other applications that I can simply copy&paste between the 2 OS and they work on both.
However this one uses the php library tonic (RESTful webservices) and makes us of php cURL module. The issue is I'm not getting an error message which makes it impossible to find the issue.
I (must) use NTLM authentication and this is done with AuthenNTLM Apache Module:
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
All files that cURL needs to fetch override AuthenNTLM authentication:
order deny,allow
deny from all
allow from 127.0.0.1
Satisfy any
Since these files are only fectehd by cURL from same server, access can be limited to localhost.
Possible issues are:
NTLM auth isn't overridden for files requested through cURL (even though AllowOverride All is set)
curl works differently on 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);
other?
Apache log says:
[error] Bad/Missing NTLM/Basic Authorization Header for /myApp/webservice/local/viewList.php
But this directory should override NTLM authentication
EDIT:
using curl command line from windows to access same resource i get:
<!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>
Upvotes: 0
Views: 2020
Reputation: 7622
The issue is the default Apache configuration on Ubuntu:
Options Indexes FollowSymLinks MultiViews
MultiViews is changing request_uri from myResource to myResource.php.
Solutions:
I chose last option because that should work regardless of configuration and I only have 3 such files so the change took about 30 secs...
Upvotes: 1