PHP enablen van environment variabelen

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

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Jan_V
  • Registratie: Maart 2002
  • Laatst online: 15:31
Ik ben bezig om lokaal m'n PHP omgeving weer aan de praat te krijgen.

Lokaal draai ik Windows Vista Ultimate (32-bit).
Inmiddels heb ik PHP en MySQL al draaien. Na veel proberen en vloeken lijkt alles redelijk naar behoren te werken.
Nu heb ik m'n website lokaal gezet. In deze website maak ik gebruik van de functie getenv(). Met deze functie kun je de environment variables uitlezen, bijvoorbeeld de servernaam of de lokatie waar je website draait.
Met de code
code:
1
getenv('HTTP_HOST')

zou je lokaal normaliter localhost of iets in die trand terug krijgen. Naar mijn weten moet je wel zelf in de php.ini aangeven dat je environment variabelen aan wilt zetten.

De regel die ik hiervoor heb aangepast is dit
code:
1
2
3
; Note:  If this directive is empty, PHP will let the user modify ANY
; environment variable!
safe_mode_allowed_env_vars =

Dit lijkt me wel een redelijk passende, hoewel ze het in deze regel wel over de safe_mode hebben dacht ik.

Probleem is echter dat ik nu geen waarden terug krijg van de getenv() functie.
Inmiddels heb ik de hele php.ini nageplozen, maar verder niet echt een passende configuratie regel gevonden.
Ook heb ik al een ;-teken voor de betreffende regel gezet, om hem in commentaar te zetten.

Het 'rare' is ook dat in m'n test bestand welke phpinfo() aanroept, er wel gewoon de volgende tekst bij het kopje ALL_HTTP staat:
code:
1
anderevariabelen.....HTTP_HOST:localhost....anderevariabelen

Hij lijkt dus wel de HTTP_HOST te kennen, maar de aanroep werkt niet in m'n website. Ook werkt hij niet in andere testbestanden van me. Alleen maar via phpinfo().

Aangezien dit over de PHP-omgeving gaat en niet specifiek over m'n pagina's vond ik dit wel een geschikt subforum.

Verder draait alles volgens mij goed, behalve dan de omgevings variabelen.
Via de search vond ik met m'n zoekstrings niet echt relevante topics. Ook op Google vond ik in eerste instantie niets.

Uiteindelijk heb ik PHP trouwens geinstalleerd met David Wang z'n batch bestand. Hier te vinden: http://blogs.msdn.com/dav...n-PHP-on-IIS7-Part-2.aspx

Werkte bijna perfect. Na een paar keer proberen had ik het draaien.

Op WinXP met IIS6 had ik het zo draaien, maar Vista en IIS7 lijkt iets lastiger te zijn.
Het resetten van IIS gaat trouwens ook niet echt lekker. Bij het opnieuw opstarten/stoppen van IIS krijg ik een foutmelding over het IIS Worker Process. Het opnieuw opstarten van IIS betekend dus eigenlijk de computer opnieuw opstarten, aangezien de service niet lukt. Heeft op zich niets te maken met m'n PHP-probleem, maar 'even' iets snel uitproberen is er dus niet bij. Iets proberen kost al snel 5 tot 10 minuten, wat nogal lang is als je 10 verschillende opties moet uitproberen.

Battle.net - Jandev#2601 / XBOX: VriesDeJ


Acties:
  • 0 Henk 'm!

  • Cavorka
  • Registratie: April 2003
  • Laatst online: 27-03-2018

Cavorka

Internet Entrepreneur

Wat geeft...
PHP:
1
print_r($_SERVER)
...terug? Want dan weet je meteen welke er wel en niet beschikbaar zijn voor je.

Als je trouwens op zoek bent naar een makkelijke webserver installatie, dan kan ik WAMPServer sterk aanraden. 1 installer die dus Apache/PHP/MySQL voor je installeert, en een zeer handige tray icon waarmee je alles kan instellen en bereiken (httpd.conf/php.ini/my.ini).

[ Voor 55% gewijzigd door Cavorka op 03-09-2007 21:47 ]

the-blueprints.com - The largest free blueprint collection on the internet: 50000+ drawings.


Acties:
  • 0 Henk 'm!

  • Jan_V
  • Registratie: Maart 2002
  • Laatst online: 15:31
Met bovenstaande code krijg ik een hele lijst met variabelen (die ik dus zou moeten kunnen gebruiken).
Hier even een raw copy-paste van de resultaten
code:
1
Array ( [ALL_HTTP] => HTTP_CACHE_CONTROL:max-age=0 HTTP_CONNECTION:keep-alive HTTP_KEEP_ALIVE:300 HTTP_ACCEPT:text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 HTTP_ACCEPT_CHARSET:ISO-8859-1,utf-8;q=0.7,*;q=0.7 HTTP_ACCEPT_ENCODING:gzip,deflate HTTP_ACCEPT_LANGUAGE:nl,en-us;q=0.7,en;q=0.3 HTTP_HOST:localhost HTTP_USER_AGENT:Mozilla/5.0 (Windows; U; Windows NT 6.0; nl; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6 [HTTPS] => off [SCRIPT_NAME] => /freezco/test.php [HTTP_COOKIE] => [AUTH_PASSWORD] => [AUTH_TYPE] => [AUTH_USER] => [CONTENT_LENGTH] => 0 [CONTENT_TYPE] => [PATH_TRANSLATED] => C:\inetpub\wwwroot [QUERY_STRING] => [REMOTE_ADDR] => ::1 [REMOTE_HOST] => ::1 [REMOTE_USER] => [REQUEST_METHOD] => GET [SERVER_NAME] => localhost [SERVER_PORT] => 80 [SERVER_PROTOCOL] => HTTP/1.1 [SERVER_SOFTWARE] => Microsoft-IIS/7.0 [APPL_MD_PATH] => /LM/W3SVC/1/ROOT [APPL_PHYSICAL_PATH] => C:\inetpub\wwwroot [INSTANCE_ID] => 1 [INSTANCE_META_PATH] => /LM/W3SVC/1 [LOGON_USER] => [REQUEST_URI] => /freezco/test.php [URL] => /freezco/test.php [SCRIPT_FILENAME] => C:\inetpub\wwwroot\freezco\test.php [ORIG_PATH_INFO] => /freezco/test.php [PATH_INFO] => [ORIG_PATH_TRANSLATED] => C:\inetpub\wwwroot\freezco\test.php [DOCUMENT_ROOT] => C:\inetpub\wwwroot [PHP_SELF] => /freezco/test.php [HTTP_CACHE_CONTROL] => max-age=0 [HTTP_CONNECTION] => keep-alive [HTTP_KEEP_ALIVE] => 300 [HTTP_ACCEPT] => text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 [HTTP_ACCEPT_CHARSET] => ISO-8859-1,utf-8;q=0.7,*;q=0.7 [HTTP_ACCEPT_ENCODING] => gzip,deflate [HTTP_ACCEPT_LANGUAGE] => nl,en-us;q=0.7,en;q=0.3 [HTTP_HOST] => localhost [HTTP_USER_AGENT] => Mozilla/5.0 (Windows; U; Windows NT 6.0; nl; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6 [REQUEST_TIME] => 1188936255 )

Eigenlijk dus alle variabelen die ik zou kunnen willen gebruiken staan hier in, waaronder HTTP_POST.

Wanneer ik echter de volgende code in een test-bestand plaats
PHP:
1
2
3
<?php
echo "Waarde = ". getenv("HTTP_USER_AGENT");
?>

of
PHP:
1
2
3
<?php
echo "Waarde = ". getenv("HTTP_HOST");
?>

krijg ik niets terug (behalve dan de 'Waarde ='-string).

Het lijkt dus alsof ik de environment variabelen niet mag gebruiken in combinatie met getenv(), hoewel ze gewoon beschikbaar zijn, zoals het 'script' van Kavorka al aangeeft.

Als het nou niet zou werken in m'n echte test-site zou nog tot daar aan toe zijn, maar als het niet eens in test-bestanden werkt is wel enorm raar naar mijn mening.

[edit]
PS: Dat WAMP5 ziet er wel goed uit als ik de website zo lees. Ik heb alleen iets tegen Apache. Geen goede argumenten, maar de eerste keer dat ik Apache gebruikte was in een console-linux omgeving. Aangezien ik al jarenlang Windows gebruik was dat even wennen en enorm frustrerend. Sindsdien vermijd ik Apache zoveel mogelijk. Sowieso gebruik ik liever IIS, aangezien we dat ook op het werk gebruiken en enorm eenvoudig is te installeren. Alleen met PHP is het wat vervelend in te stellen, vooral bij Vista. Wat dat betreft zou WAMP5 misschien wel een uitkomst zijn, maar ik wil niet dat de software het van mij wint en ik m'n verlies moet toegeven.

[ Voor 10% gewijzigd door Jan_V op 04-09-2007 22:15 ]

Battle.net - Jandev#2601 / XBOX: VriesDeJ


  • WouZz
  • Registratie: Mei 2000
  • Niet online

WouZz

Elvis is alive!

Maak eens een php info bestand:

PHP:
1
phpinfo();


Hier zie je precies welke variabelen er bestaan en hoe je ze op kan vragen. Dan zie je ook dat HTTP_HOST niet in de environment variabelen staan maar in de server variabelen. je kan hem dus opvragen met
PHP:
1
print $_SERVER['HTTP_HOST'];

On track


  • Jan_V
  • Registratie: Maart 2002
  • Laatst online: 15:31
Gisteravond laat was ik er inderdaad achter gekomen dat met behulp van $_SERVER["HTTP_HOST"] je de HTTP_HOST variabele op kon halen, naar aanleiding van Cavorka z'n $_SERVER parameter.

Toch blijf ik het raar vinden dat in m'n live-omgeving er wel gewoon getenv() kan worden gebruikt en lokaal niet. Het maakt verder niets meer uit, aangezien ik nu toch wel de $_SERVER kan gebruiken.

Na dit probleem zag ik dat er ook nog een cookie-probleem is, namelijk dat ze niet worden aangemaakt/uitgelezen met de $HTTP_COOKIE_VARS en setcookie(). Dit zou een Vista euvel kunnen zijn, maar ook een configuratie. Ik zal nog een paar keer wat wijzigingen in de php.ini aanbrengen om te kijken of ik die werkend kan krijgen. Mocht het niet lukken dan ga ik wel weer over naar ontwikkelen op de live-server. Het is dan wel niet ideaal, maar daar weet ik zeker dat alles goed is ingesteld.

Battle.net - Jandev#2601 / XBOX: VriesDeJ


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 15:14

Creepy

Tactical Espionage Splatterer

Wilde gok: thuis draai je PHP als CGI en op de live omgeving als module?

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney

Pagina: 1