[PHP] Functies die URL's accepteren werken niet

Pagina: 1
Acties:
  • 143 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Sponge
  • Registratie: Januari 2002
  • Laatst online: 20-09 19:05

Sponge

Serious Game Developer

Topicstarter
Ik heb een vaag probleem met mijn PHP, die ik onlangs geinstalleerd heb. Eerst even de specs:

OS: Windows 2003
PHP: Version 4.4.2
Apache: 1.3 nogwat, PHP via SAPI
allow_url_fopen: On On

Mijn probleme is dus, dat alle functies die een URL gebruiken gewoon 'hangen' of 'niets' doen. De pagina blijft gewoon wit. Geen fout in de webpagina (soms een DNS error, aka, pagina bestaat niet), een 200 in de Apache access log, geen errors in de apache log, en ook geen errors in de php log (aangezet).

allow_url_fopen staat tevens ook aan. Enkele voorbeelden:

- imagecreatefrompng(bestand) werkt wel
- imagecreatefrompng("http://www.persistentrealities.com/temp/button.png") werkt niet
- fopen(bestand, "r") werkt wel
- fopen("http://www.persistentrealities.com/temp/button.png","r") werkt niet (maakt niet uit wat voor url, google.nl, etc, werken allemaal niet)
- fsockopen werkt wel

Een IP gebruiken maakt niet uit. Zelfde resultaat. De DNS lookup werkt goed op de machine:

Address: 80.69.68.197
Aliases: www.persistentrealities.com

Nog meer feiten:

- Geen firewalls die aanstaan
- Er is wel een router (zou niet moeten uitmaken lijkt mij, het werkt immers perfect op mijn eigen machine)
- Apache draait op poort 8800 (@Home doet niet aan 8080 :()
- Heb heel GoT en Google al doorzocht
- En ja, Apache vaak restart na ini wijzigingen :).

Ik heb totaal geen idee, en heb volgens alles gechecked waar ik op kan komen. Functies als fopen geven gewoon geen handle oid terug, gewoon niets!

Iemand enig idee? :)

Acties:
  • 0 Henk 'm!

  • StevenK
  • Registratie: Februari 2001
  • Laatst online: 20-09 16:45
Error-reporting aan zetten ?

[ Voor 94% gewijzigd door StevenK op 31-01-2006 19:52 ]

Was advocaat maar vindt het juridische nog steeds leuk


Acties:
  • 0 Henk 'm!

  • Sponge
  • Registratie: Januari 2002
  • Laatst online: 20-09 19:05

Sponge

Serious Game Developer

Topicstarter
Staat aan, geeft niets terug.

Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 18-09 14:42
Ga eens opzoek naar "fopen-wrappers" ;)

Acties:
  • 0 Henk 'm!

  • Sponge
  • Registratie: Januari 2002
  • Laatst online: 20-09 19:05

Sponge

Serious Game Developer

Topicstarter
frickY schreef op dinsdag 31 januari 2006 @ 19:57:
Ga eens opzoek naar "fopen-wrappers" ;)
Snap niet precies wat je bedoelt. fopen is enabled. en een extra " ini_set('allow_url_fopen', '1'); " help ook niet :)

Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 18-09 14:42
De fopen-wrappers zorgen ervoor dat je in diverse functies, zoals fopen, filesize, file_get_contents() etc een URL kunt opgeven in plaats van een lokaal pad.
Met "fopen-wrappers don't work" of een andere zoekterm in die richting moet je een heel eind komen ljkt me.

Acties:
  • 0 Henk 'm!

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 12:54
frickY schreef op dinsdag 31 januari 2006 @ 20:12:
De fopen-wrappers zorgen ervoor dat je in diverse functies, zoals fopen, filesize, file_get_contents() etc een URL kunt opgeven in plaats van een lokaal pad.
Met "fopen-wrappers don't work" of een andere zoekterm in die richting moet je een heel eind komen ljkt me.
Voordat de TS diep in Google gaat, gewoon even de PHP handleiding erbij pakken. Bij imagecreatefrompng() staat bijvoorbeeld :
Tip: You can use a URL as a filename with this function if the fopen wrappers have been enabled. See fopen() for more details on how to specify the filename and Appendix M for a list of supported URL protocols.

Acties:
  • 0 Henk 'm!

  • Sponge
  • Registratie: Januari 2002
  • Laatst online: 20-09 19:05

Sponge

Serious Game Developer

Topicstarter
Sybr_E-N schreef op dinsdag 31 januari 2006 @ 20:49:
[...]

Voordat de TS diep in Google gaat, gewoon even de PHP handleiding erbij pakken. Bij imagecreatefrompng() staat bijvoorbeeld :

[...]
Tsja, de fopen-wrappers staan ook gewoon aan. Maar zelfs localhost wil niet. Ik weet het echt niet meer :o

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

En toch kan het niet anders dan dat ze uit staan. Heb je niet per ongeluk twee php.ini files en zit je steeds de verkeerde aan te passen?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Osiris
  • Registratie: Januari 2000
  • Niet online
-NMe- schreef op woensdag 01 februari 2006 @ 01:54:
En toch kan het niet anders dan dat ze uit staan.
En om dat te controleren is er de gouwe ouwe:

PHP:
1
phpinfo();


:Y)

Daar staat in het hoofdstuk "Configuration" onder 't eerste kopje "PHP Core" de waarde van "allow_url_fopen" :)

Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 16:28
Sponge schreef op dinsdag 31 januari 2006 @ 19:55:
[Error reporting] staat aan, geeft niets terug.
Ik geloof er niets van - als fopen failt print 'ie altijd een warning.

[ Voor 51% gewijzigd door Janoz op 01-02-2006 10:32 ]


Acties:
  • 0 Henk 'm!

  • pietje63
  • Registratie: Juli 2001
  • Laatst online: 16:14

pietje63

RTFM

Met aan bedoelt met hier op E_ALL

De grootste Nederlandstalige database met informatie over computers met zoekfunctie!!


Acties:
  • 0 Henk 'm!

  • Sponge
  • Registratie: Januari 2002
  • Laatst online: 20-09 19:05

Sponge

Serious Game Developer

Topicstarter
Tsja, en die staan ook echt aan. Ik gebruik al een aantal jaar PHP hoor ;).

Overigens over het aanstaan van de "allow_url_fopen", die had ik in mijn topicstart al gepost:
allow_url_fopen: On On
volgens phpinfo();.

Ik heb zojuist de machine maar eens gereboot (met tegenzin ;)), en zal het straks even opnieuw bekijken.

Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 16:28
En je weet heel zeker dat fopen() FALSE returnt?
PHP:
1
2
3
4
5
6
7
8
9
error_reporting(E_ALL);
$fp = fopen('http://www.google.nl/', 'rt');
if(is_resource($fp))
    echo 'Openen gelukt!';
else
if($fp === FALSE)
    echo 'fopen failed! -- Er zou nu een waarschuwing moeten komen.'
else
    echo 'Iets raars! Type: ', gettype($fp);


Heb je ook gecontroleerd dat als er een foutmelding komt, die inderdaad in je logfile terecht komt? (Even checken dus met fopen("/niet/bestaand/bestand", "r") ofzoiets.)

[ Voor 29% gewijzigd door Soultaker op 01-02-2006 15:39 ]


Acties:
  • 0 Henk 'm!

  • Sponge
  • Registratie: Januari 2002
  • Laatst online: 20-09 19:05

Sponge

Serious Game Developer

Topicstarter
Heb je code getest, wit scherm, gebeurd 0,0. Komt wel een regel in de access log (200, OK), verder niets in error logs, php logs. Heb het met een pad geprobeert wat niet bestaat (de hele schijf zelfs niet) zelfde resultaat.

Ik heb veel meegemaakt in de tijd dat ik met computers werk, en denk dat dit nummer twee wordt op de "totaal onverklaarbare gebeurtenissen lijst". (Nummer een is het control panel bij een computer van een kennis, wat zelfs na herinstallatie(s) van windows 98 (of 95), meteen na een seconde verdween!).

Ik zal PHP5 eens installeren en kijken wat dat oplevert. Ik kan hier echter niet teveel tijd meer aan besteden.

Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 18-09 14:42
Ehmm
Probeer ini_set("display_errors", 1) er ook even bij :Y)

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Soultaker heeft een ; vergeten aan het eind van regel 7. Maar die had je ook prima zelf moeten kunnen vinden. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Eijkb
  • Registratie: Februari 2003
  • Laatst online: 13:44

Eijkb

Zo.

Mocht je op een machine zitten met veel virtual hosts kan je ook eens kijken naar het aantal open file descriptors van apache. Als je met je fopen oid eroverheen gaat krijg je geen warnings én werkt je php script niet. Maar goed, normaal staat deze fd_open op iets van 1024. Stel je hebt 350 domeinen die ieder 3 logfiles openhouden (accesslog, errorlog, suexec_log) dan zit je dus boven die 1024 en kan het wel eens voorkomen.

.


Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 16:28
Sponge schreef op vrijdag 03 februari 2006 @ 19:44:
Heb je code getest, wit scherm, gebeurd 0,0. Komt wel een regel in de access log (200, OK), verder niets in error logs, php logs. Heb het met een pad geprobeert wat niet bestaat (de hele schijf zelfs niet) zelfde resultaat.
Beide punten wijzen erop dat je helemaal geen errors logt. Zoals -NMe- aangaf zat er een syntax error in mijn code die zeker een foutmelding op zou leveren. Als je de puntkomma toevoegt dan neem ik aan dat je tenminste iets van uitvoer krijgt, tenzij de PHP interpreter misterieus vastloopt halverwege (maar dan is het raar dat je alsnog een 200 OK krijgt).
Eijkb schreef op vrijdag 03 februari 2006 @ 22:09:
Mocht je op een machine zitten met veel virtual hosts kan je ook eens kijken naar het aantal open file descriptors van apache. Als je met je fopen oid eroverheen gaat krijg je geen warnings én werkt je php script niet. Maar goed, normaal staat deze fd_open op iets van 1024. Stel je hebt 350 domeinen die ieder 3 logfiles openhouden (accesslog, errorlog, suexec_log) dan zit je dus boven die 1024 en kan het wel eens voorkomen.
Op zich een goede suggestie, maar als dat het geval was in het oorspronkelijke probleem, dan is het wel raar dat dat probleem alleen optreedt bij remote bestanden (waarvoor, naar ik aanneem, 1 socket en dus 1 file descriptor gebruikt wordt) en niet bij lokale bestanden (ook 1 file descriptor).

[ Voor 38% gewijzigd door Soultaker op 03-02-2006 23:13 ]


Acties:
  • 0 Henk 'm!

  • r0bert
  • Registratie: September 2001
  • Laatst online: 30-07 02:32
Geeft je PHP uberhaupt wel output? Bijv als je gewoon droog wat echoot? Shorttags aan? Misschien handig om je PHP Info gedeeltelijk te sharen hier? display_erros ook aan?

[ Voor 8% gewijzigd door r0bert op 04-02-2006 10:22 ]


Acties:
  • 0 Henk 'm!

  • Speedener
  • Registratie: September 2000
  • Laatst online: 18-09 12:54
Ik heb op dit moment exact hetzelfde probleem.

Alle suggesties die in dit topic staan al doorgenomen. Geen enkel effect.

Is Sponge hier nog uitgekomen?

LG Therma V Split WP: HU143MA.U33-HN1636M NK5


Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 18-09 14:42
Je hebt in je PHP.ini;
- display_errors op 1?
- error_reporting op E_ALL ?

Het enige moment waarop ik heb ervaren dat PHP in zijn geheel niets meer terug geeft, ook geen foutmeldingen, is bij het overschrijven van de max_memory_limit.

Acties:
  • 0 Henk 'm!

  • Speedener
  • Registratie: September 2000
  • Laatst online: 18-09 12:54
in php.ini:
display_errors = On
memory_limit = 16M

in script:
error_reporting(E_ALL);
PHP Version 4.4.2

System Windows NT SERVER 5.2 build 3790
Build Date Jan 13 2006 13:49:27
Edit:

Ik heb gedowngrade naar 4.4.1 en toen werkte het wel.

[ Voor 15% gewijzigd door Speedener op 28-07-2006 20:50 ]

LG Therma V Split WP: HU143MA.U33-HN1636M NK5


Acties:
  • 0 Henk 'm!

  • Sponge
  • Registratie: Januari 2002
  • Laatst online: 20-09 19:05

Sponge

Serious Game Developer

Topicstarter
Mja, inderdaad vaag. Dat was ook mijn oplossing destijds.

In de changelog naar 4.4.2 niet echt veel bijzonders, misschien:

Fixed bug #34359 (Possible crash inside fopen http wrapper).

Maar ja. Het komt blijkbaar alleen in speciale situaties voor, of niemand draait 4.4.2 :).

Acties:
  • 0 Henk 'm!

  • Observer
  • Registratie: April 2001
  • Laatst online: 16:24
Is een bug in PHP 4.4.2 denk ik, gefixed in 4.4.3. Lees de changelog op de meuktracker maar eens (onderaan):

meuktracker: PHP 4.4.3

There are 10 kinds of people in the world: those that understand binary and those that don't


Acties:
  • 0 Henk 'm!

  • Speedener
  • Registratie: September 2000
  • Laatst online: 18-09 12:54
NCIS schreef op vrijdag 04 augustus 2006 @ 14:56:
Is een bug in PHP 4.4.2 denk ik, gefixed in 4.4.3. Lees de changelog op de meuktracker maar eens (onderaan):

meuktracker: PHP 4.4.3
Ik had het inderdaad net ook gezien. Duurt gewoon 6 maanden voordat ze het fixxen. Leuk 8)7

LG Therma V Split WP: HU143MA.U33-HN1636M NK5

Pagina: 1