Fino a ieri il procedimento http://USERNAME:PASSWORD@url/to/script.php funzionava alla grande.
Da stamattina, non so per quale misterioso motivo, non va più. Idee?
A quanto pare il problema riguarda la configurazione di php.
Con questa configurazione
- PHP 5.6
- Apache 2.4
- PHP5-FPM
la variabile $_SERVER['HTTP_AUTHORIZATION'] è vuota e di conseguenza non funziona.
Anche provando a inserire in un file htaccess questa regola non va.
codice:RewriteEngine on RewriteRule.?-[E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
Leggendo in giro, l'unica strada è questa:
You can work around this issue by passing the header directly to PHP via the env:
SetEnvIfAuthorization"(.*)" HTTP_AUTHORIZATION=$1
Ma non ho capito dove va inserita questa riga.
Consigli? grazie
digitos
Nessuno è al corrente di questo problema? grazie comunque
esempio banalissimo. Salva il file come, ad esempio, getxml.php , mettigli accanto un file test.xml con l'xml che vuoi, poi:Codice PHP:
<?php
$user = $_SERVER['PHP_AUTH_USER'];
$passwd = $_SERVER['PHP_AUTH_PW'];
//autentico l'utente
if(!$user || !$passwd || $user!='USERNAME_UTENTE_VALIDO' || $passwd !='PASSWORD_UTENTE_VALIDO'){
header('WWW-Authenticate: Basic realm="My Realm"');
header('HTTP/1.0 401 Unauthorized');
exit;
}
//l'utente è loggato, leggo l'xml
$xml = file_get_contents('test.xml');
//output dell'xml
header('Content-Type: text/xml');
echo $xml;
apri il browser, vai ad http://localhost:8000/getxml.php e ti chiederà l'autenticazione, et voilà. Il browser poi si ricorda l'autenticazione che hai fatto, quindi dopo la prima richiesta non ti richiede più di autenticarticodice:cd path/to/cartella/contentente_getxml.php php -S localhost:8000
WWW-Authenticate: Basic informa il client che è richiesta un'autenticazione di tipo HTTP basic. Il client dovrà quindi mandare, nella richiesta http, l'header Authorization con il digest formato da base64(usernameassword) , ad esempio:
tale autorizzazione puoi scegliere se gestirla a livello di Apache o di Phpcodice:Authorization: Basic dXNlcjpwYXNzd29yZA==
IP-PBX management: http://www.easypbx.it
Old account: 2126 messages
Oldest account: 3559 messages
Grazie per la risposta. Ma se il problema è che non vengono inizializzate le variabili $_SERVER['PHP_AUTH_USER'] e $_SERVER['PHP_AUTH_PW'] come faccio usare questo script? Perdona la mia ignoranza in materia ma mi sembra di capire che il mio ostacolo sia a monte.
grazie ancora digitos
Ce l'ho fatta!!!
Questo è l'unico codice htaccess che ho trovato per far funzionare le variabili php_auth_user e pw con php 5.6 in modalità FPM con Apache 2.2 o 2.4.
grazie a tutti!codice:<IfModule mod_rewrite.c> RewriteEngine On RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L] RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ nomefile.php [QSA,L] </IfModule>