haagelMedlem sedan feb. 2006134 inlägg Jag har problem med att läsa en fil via https. Jag använder fopen() för att öppna filen, som alltså ligger på en annan server.
Skriptet fungerar. Jag har testat det hos one (före detta b-one) och då fungerar det som jag vill. Men när jag kör det på min egen server så får jag följande felmeddelande:
fopen() [function.fopen]: Unable to find the wrapper "https" - did you forget to enable it when you configured PHP?
Jag antar att det är någon inställning eller liknande i min PHP-installation som spökar (eftersom det fungerar på en annan server). Jag kör med EasyPHP med PHP version 4.3.10. Jag har även testat att uppgradera till PHP 5.2.0, men samma problem kvarstår.
Någon som vet vad problemet kan bero på?
The_HulkMedlem sedan juni 20031 837 inlägg kör du php i safe mode?
Man måste även tillåta att php läser url-filer via fopen
If PHP has decided that filename specifies a registered protocol, and that protocol is registered as a network URL, PHP will check to make sure that allow_url_fopen is enabled. If it is switched off, PHP will emit a warning and the fopen call will fail.
du kan även läsa mer här http://se2.php.net/manual/sv/function.fopen.php
haagelMedlem sedan feb. 2006134 inlägg Har testat med både
sql.safe_mode = On
och
allow_url_fopen = On
men det fungerar ändå inte... :(
Sidan du hänvisar till har jag läst igenom, men den hjälpte mig inte. Skulle kunna vara att det är något jag inte riktigt förstår. Fler tips mottages tacksamt!!
tydalMedlem sedan juni 20034 013 inlägg Felmeddelandet säger att du saknar stöd för https. Prova att aktivera curl:
http://se.php.net/curl
The_HulkMedlem sedan juni 20031 837 inlägg haagelMedlem sedan feb. 2006134 inlägg Har aktiverat php_openssl.dll, fungerar ändå inte...
Får ta en titt på curl...
tydal, du säger att jag ska aktivera curl. Innebär detta att det redan finns installerat och att det bara är att aktivera det? Eller måste jag installera nått?
wally_91Medlem sedan feb. 2006511 inlägg
haagel skrev:
tydal, du säger att jag ska aktivera curl. Innebär detta att det redan finns installerat och att det bara är att aktivera det? Eller måste jag installera nått?
Krav
In order to use the CURL functions you need to install the CURL package. PHP requires that you use CURL 7.0.2-beta or higher. In PHP 4.2.3, you will need CURL version 7.9.0 or higher. From PHP 4.3.0, you will need a CURL version that's 7.9.8 or higher. PHP 5.0.0 requires a CURL version 7.10.5 or greater.
http://se.php.net/curl
The_HulkMedlem sedan juni 20031 837 inlägg curl ligger som en extension hos mig. kolla bland dina andra extensions och se om den finns där.
kolla även så filerna finns i din extensions-katalog. inte alla versioner som har med extensions-dll:erna
haagelMedlem sedan feb. 2006134 inlägg Hur gör jag för att aktivera curl? Jag har php_curl.dll i min extensions-mapp och jag har aktiverat "extension=php_curl.dll" (tagit bort ';'). Vad mer måste jag göra?
Hittar detta på http://se.php.net/curl:
Note to Win32 Users: In order to enable this module on a Windows environment, libeay32.dll and ssleay32.dll must be present in your PATH.
Dessa filer hittar jag i min php-mapp, men vad menas med att de ska finnas i min "PATH"?
En annan sak... Det borde väl gå att lösa detta utan curl? Som jag nämnde i mitt första inlägg så fungerar ju mitt skript (som inte använder curl) utmärkt på one:s servrar. Vad kan de ha gjort med sin installation för att det ska fungera?
The_HulkMedlem sedan juni 20031 837 inlägg har du testat att söka på google på det felmeddelande du får?
testa att kolla på https://www.php.net på de funktioner du använder ex: fopen - http://se2.php.net/manual/en/function.fopen.php
tittade inte så mycket på sökresultaten på google, de flesta hade med OpenSSL att göra men det verkade inte fungera i ditt fall.
haagelMedlem sedan feb. 2006134 inlägg Jo, jag har sökt både på google och på php.net, men inte hittat något som fungerar. Eller ja, det fungerar på vissa servrar, men inte på den som jag kommer att använda (vilken är en standardinstallation av EasyPHP).
Men åter igen...det här med PATH, vad är det? Som det står skrivet på php.net så verkar det vara något självklart som alla vet vad det är. Utom jag då... :l
colioneMedlem sedan juni 20014 421 inlägg Pathen hittar du om du högerklickar på den här datorn -> egenskaper -> avancerat -> miljövariabler
haagelMedlem sedan feb. 2006134 inlägg Ok. Ska jag skriva in sökvägen till dll:erna där eller?
colioneMedlem sedan juni 20014 421 inlägg prova. ;) först utan namnet
haagelMedlem sedan feb. 2006134 inlägg Ok, det löste sig till slut. Jag kör nu med CURL. Det var redan installerat så jag behövde bara aktivera det. Jag krånglade en hel del och testade alla möjliga sätt för att aktivera, men det fungerade inte. Jag skrev i PATH, jag kopierade dll:er hit och dit, "kommenterade fram" extensionsraden, men inget hände. Till sist hittade jag lösningen:
Eftersom jag använder EasyPHP så kunde man tydligen inte aktivera extensions på samma sätt som vanligt (jag fick iaf inte till det). Däremot var det ÄNNU enklare, när man visste hur man gjorde. Man behöver bara ha EasyPHP-fönstret uppe, trycka på "E" och välja "Konfiguration > PHP Extension". Man får då uppe en lista med kryssrutor där man kan bocka för de extensions man vill aktivera. Jag bockade för "php_curl", tryckte på "ändra" och startade om Apache (via EasyPHP-fönstret). Så svårt var det :p
Här är skriptet jag körde för att köra hämta data via https:
$url = "https://www.exempel.se";
$ch = curl_init(); // Initialisera CURL
//Sätt options...
curl_setopt($ch, CURLOPT_URL, $url); // Bestäm URL:en.
curl_setopt($ch, CURLOPT_FAILONERROR, 1); // "Fail silently if the HTTP code returned is equal to or larger than 400".
curl_setopt($ch, CURLOPT_HTTPGET, 1); // Använd GET som metod.
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // Gör så att curl_exec returnerar resultatet.
curl_setopt($ch, CURLOPT_TIMEOUT, 4); // Timeout efter 4s.
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // Gör så att det fungerar med https.
$result = curl_exec($ch); // Kör http--request och lagra svaret.
curl_close($ch); // Stäng.
Kanske kan det hjälpa nån annan nån gång...
Hur som helst, tack för hjälpen alla! :)
The_HulkMedlem sedan juni 20031 837 inlägg testade du att bocka för OpenSSL samtidigt?