Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
(Web-) Design und webbasierte Sprachen Tipps & Tricks, Designabgleich, HTML & Javascript, Flash, ASP, PHP, Perl/CGI...

PHP5 ignoriert einfache Anführungszeichen

Diskussion: PHP5 ignoriert einfache Anführungszeichen im Forum (Web-) Design und webbasierte Sprachen, in der Kategorie Web, Network & Multimedia Palace; Anzeige Hi, ich bin zur Zeit für einen Server zuständig, bei dem leider folgendes Problem auftritt. Ich habe mich schon ...

Antwort
Alt 28.06.08, 11:31   #1 (permalink)
Administrator
 
Benutzerbild von Mackz
 
Registriert seit: 02.10.01
Mackz Leistung: Pentium IMackz Leistung: Pentium I
Likes: 30
PHP5 ignoriert einfache Anführungszeichen

Anzeige

Hi,

ich bin zur Zeit für einen Server zuständig, bei dem leider folgendes Problem auftritt. Ich habe mich schon tot-gegooglet und verschiedene Leute gefragt aber eigentlich hat niemand so recht eine Idee woran das liegen kann. Vielleicht hat hier ja jemand bereits mit diesem Problem zu tun gehabt und weiß wo der Hund begraben liegt. *hoff* :)

Server:
Root Server bei Strato
Suse 10.2
Apache 2
PHP 5.2.5

PHP.ini:
safe_mode Off
register_globals Off
magic_quotes_gpc Off
magic_quotes_runtime Off
magic_quotes_sybase Off

Problem:
PHP ignoriert scheinbar einfache Anführungszeichen beim Ansprechen von Superglobalen. Superglobalen die mit einfachen Anführungszeichen angesprochen werden, existieren nicht. Werden doppelte Anführungszeichen verwendet, funktioniert alles normal. Dadurch funktioniert eine wichtige Webanwendung auf diesem Server nicht, da dort fast ausschließlich mit einfachen Anführungszeichen gearbeitet wird. Auf anderen Servern lief diese Webanwendung bereits problemlos.

Beispiel:
Es werden verschiedene Variablen per GET und POST übergeben.
$_GET['variable'] liefert keinen Inhalt zurück.
$_GET["variable"] gibt den richtigen Variableninhalt zurück.

Das selbe tritt auf bei $_POST['variable'] und $_REQUEST['variable'].
Es wird keine Fehlermeldung ausgegeben.

isset($_GET['variable']), isset($_POST['variable']) und isset($_REQUEST['variable']) liefert jeweils False
isset($_GET["variable"]), isset($_POST["variable"]) und isset($_REQUEST["variable"]) gibt True zurück

Bei Verwendung von ' werden also die Variablen scheinbar garnicht angesprochen.


Jemand 'ne Idee?

__________________
RL sux big time... auch 2012!

Deleting pr0n is like killing your best friend

[HaBo] bei Facebook - Werde Fan
Mackz ist offline   Mit Zitat antworten
Alt 28.06.08, 11:39   #2 (permalink)
 
Benutzerbild von Stein
 
Registriert seit: 10.10.05
Stein Leistung: Facit NTK
Stein eine Nachricht über ICQ schicken
Likes: 0
Standard

das ist in Php so ' ' igrnoriet weiter $ und " zeichen " " nicht
__________________
Steinhagelvoll
Stein ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 28.06.08, 12:03   #3 (permalink)
 
Registriert seit: 03.03.08
Knoxx Leistung: Facit NTK
Likes: 0
Standard

Da war doch mal was mit register_globals = Off und den Strings.

Wenn man register_globals = Off setzt, dürfte so eine Schreibweise nicht mehr funktionieren:

PHP-Code:
<?
echo "Dies ist Test Nummer: $_POST['testnummer'].";
?>
Was mitunter ein Grund dafür ist, dass noch viele alte Programme ein Problem mit register_globals=Off haben.

Wenn register_globals ausgeschaltet sind müsste man es so machen:
PHP-Code:
<?
echo "Dies ist Test Nummer: ".$_POST['testnummer'].".\n";
?>
Also, setz register_globals mal auf On und schau ob es dann funktioniert.

Vielleicht hängst du auch mal noch deine php.ini an und postest einen Code-Ausschnitt wo so ne superglobale Variable verwendet wird.

Mehr Ideen hab ich leider spontan auch nicht.
Knoxx ist offline   Mit Zitat antworten
Alt 28.06.08, 13:25   #4 (permalink)
 
Benutzerbild von metax.
 
Registriert seit: 22.01.07
metax. Leistung: 8086
metax. eine Nachricht über ICQ schicken
Likes: 10
Standard

Hallo,

ein solcher Fehler ist mir bis jetzt auch noch nicht begegnet.

Aber du könntest erstmal versuchen, das error_reporting auf E_ALL & E_NOTICE zu stellen, dann müsstest du wenigstens Hinweismeldungen bekommen, wenn du auf einen nicht existierenden Schlüssel eines Arrays zugreifen willst.

Ansonsten wäre noch interessant, ob das Verhalten auch für andere assoziative Arrays gilt.
Also mal sowas probieren:
PHP-Code:
<?php
$x
["String"] = 42// Doppelte Anführungszeichen
echo $x['String']; // Einfache Anführungszeichen
?>
mfg, metax.
__________________
Wenn keiner zuschaut, teile ich heimlich durch Null!
Meine Homepage: Planet Metax | meine Bilder: DeviantArt | Twitter
metax. ist offline   Mit Zitat antworten
Alt 28.06.08, 13:41   #5 (permalink)
Member of Honour
 
Benutzerbild von easteregg
 
Registriert seit: 14.09.07
easteregg Leistung: Pentium Ieasteregg Leistung: Pentium I
easteregg eine Nachricht über ICQ schicken
Likes: 62
Standard

globals off ->

Code:
 C:\Users\easteregg>php
<?php
$x["String"] = 42; // Doppelte Anführungszeichen
echo $x['String']; // Einfache Anführungszeichen
?>
^Z
42
__________________
» Flattr mich! - Wenn dir mein Beitrag geholfen hat! «
<| 2 AMD Opterons 2384@ 8x3,2ghz | Tyan S2915 | 10GB | 2x 8800GT | 8400GS | Dell 3008WFP + 2x2007FP |>
easteregg ist gerade online   Mit Zitat antworten
Alt 28.06.08, 13:58   #6 (permalink)
Moderator
 
Benutzerbild von Elderan
 
Registriert seit: 30.03.04
Elderan Leistung: 8086
Likes: 14
Standard

Hallo,
Zitat:
Original von Knoxx
Also, setz register_globals mal auf On und schau ob es dann funktioniert.
Oh Gott, solch einen katastrophalen 'Tipp' habe ich schon lange nicht mehr gehört. Sei froh, wenn register_globals auf off ist, und wenn nicht, unternimm alles, damit es auf off gestellt wird.

Evt. mal var_dump($_GET['name']); nutzen.
Elderan ist offline   Mit Zitat antworten
Alt 28.06.08, 14:35   #7 (permalink)
jmc
 
Registriert seit: 16.06.08
jmc Leistung: Facit NTK
Likes: 0
Standard

An register_globals sollte es auf jeden Fall nicht liegen...
Dabei wird z.B. wenn per GET name=xxx übergeben wird die Variable $name zur Verfügung gestellt, zusätzlich zu $_GET['name'].
Funktioniert das mit den einfachen ' bei allen Arrays nicht? Lass dir einmal Fehler anzeigen.
jmc ist offline   Mit Zitat antworten
Alt 28.06.08, 21:42   #8 (permalink)
 
Registriert seit: 03.03.08
Knoxx Leistung: Facit NTK
Likes: 0
Standard

Zitat:
Original von Elderan
Hallo,
Zitat:
Original von Knoxx
Also, setz register_globals mal auf On und schau ob es dann funktioniert.
Oh Gott, solch einen katastrophalen 'Tipp' habe ich schon lange nicht mehr gehört. Sei froh, wenn register_globals auf off ist, und wenn nicht, unternimm alles, damit es auf off gestellt wird.

Evt. mal var_dump($_GET['name']); nutzen.
Mein "Tipp" war einfach ein möglicher Ansatzpunkt. Mackz verliert kein Wort über die verwendete Software. Wie alt ist diese? Welche Anforderungen hat sie? Woher soll man wissen, dass sie für PHP >4.x konzipiert wurde?
Dass man register_globals=On vermeiden sollte wo es nur geht, dürfte mittlerweile jedem klar sein, der sich auch nur etwas länger als 20min mit PHP auseinander gesetzt hat.
Er sollte es auch nur austesten und nicht den Server dauerhaft mit register_globals=On betreiben. Hab ich mich wohl etwas missverständlich ausgedrückt... ^^
Knoxx ist offline   Mit Zitat antworten
Alt 28.06.08, 22:34   #9 (permalink)
 
Registriert seit: 12.06.08
Keci Leistung: Addierstift
Likes: 0
Standard

Mackz du hast ja erwähnt, dass das Problem bei anderen Servern nicht existieren würde. Also könntest du auch wenn die Version der PHP Software der anderen Server auch deiner entspricht, einfach die php.ini von den anderen Server kopieren, Apache neustarten und dann müsste es eigentlich gehen Oder irre ich mich da?

Gruß
Keci
Keci ist offline   Mit Zitat antworten
Alt 29.06.08, 11:25   #10 (permalink)
Moderator
 
Benutzerbild von Elderan
 
Registriert seit: 30.03.04
Elderan Leistung: 8086
Likes: 14
Standard

Hallo,
an der php.ini sollte es normalerweise nicht liegen. Evt. PHP nochmal neu kompilieren (dann kann man gleich 5.2.6 aufspielen)?
Elderan ist offline   Mit Zitat antworten
Alt 29.06.08, 13:32   #11 (permalink)
Administrator
Themenstarter
 
Benutzerbild von Mackz
 
Registriert seit: 02.10.01
Mackz Leistung: Pentium IMackz Leistung: Pentium I
Likes: 30
Standard

Erstmal danke für Eure Antworten.
Einige der Tipps werde ich morgen mal ausprobieren.


Zitat:
Original von Knoxx
Mein "Tipp" war einfach ein möglicher Ansatzpunkt. Mackz verliert kein Wort über die verwendete Software. Wie alt ist diese? Welche Anforderungen hat sie? Woher soll man wissen, dass sie für PHP >4.x konzipiert wurde?
Sie wurde für PHP >4.x bzw. "Register_Globals Off" konzipiert, sonst hätte ich ja das Problem mit den superglobalen Variablen nicht
Sie lief/läuft auch auf PHP 4.x mit register_globals off problemlos.

Zitat:
Original von Keci
Mackz du hast ja erwähnt, dass das Problem bei anderen Servern nicht existieren würde. Also könntest du auch wenn die Version der PHP Software der anderen Server auch deiner entspricht, einfach die php.ini von den anderen Server kopieren, Apache neustarten und dann müsste es eigentlich gehen Oder irre ich mich da?
Geht leider nicht, da laufen überall andere Versionen

Zitat:
Original von Elderan
an der php.ini sollte es normalerweise nicht liegen.
Hm, das wäre schlecht ... *g*
__________________
RL sux big time... auch 2012!

Deleting pr0n is like killing your best friend

[HaBo] bei Facebook - Werde Fan
Mackz ist offline   Mit Zitat antworten
Alt 30.06.08, 21:38   #12 (permalink)
Administrator
Themenstarter
 
Benutzerbild von Mackz
 
Registriert seit: 02.10.01
Mackz Leistung: Pentium IMackz Leistung: Pentium I
Likes: 30
Standard

Zitat:
Original von metax.
Ansonsten wäre noch interessant, ob das Verhalten auch für andere assoziative Arrays gilt.
Also mal sowas probieren:
PHP-Code:
<?php
$x
["String"] = 42// Doppelte Anführungszeichen
echo $x['String']; // Einfache Anführungszeichen
?>
Geht ohne Probleme.

Scheint also wirklich nur die Superglobalen $_GET, $_POST und $_REQUEST zu betreffen.

Zitat:
Original von Elderan
Evt. mal var_dump($_GET['name']); nutzen.
Gibt NULL zurück.
print_r() gibt garnichts zurück.

Ansonsten hab hier noch einen Auszug aus phpinfo, vielleicht findet ja jemand was.
PHPInfo   

Code:
Configure Command	
'../configure' '--prefix=/usr' '--datadir=/usr/share/php5' '--mandir=/usr/share/man' '--bindir=/usr/bin' '--with-libdir=lib' '--includedir=/usr/include' '--sysconfdir=/etc/php5/apache2' '--with-config-file-path=/etc/php5/apache2' '--with-config-file-scan-dir=/etc/php5/conf.d' '--enable-libxml' '--enable-session' '--with-mm' '--with-pcre-regex=/usr' '--enable-xml' '--enable-simplexml' '--enable-spl' '--enable-filter' '--disable-debug' '--enable-inline-optimization' '--disable-rpath' '--disable-static' '--enable-shared' '--program-suffix=5' '--with-pic' '--with-apxs2=/usr/sbin/apxs2' '--disable-all' '--disable-cli' 

additional .ini files parsed
/etc/php5/conf.d/bz2.ini, /etc/php5/conf.d/ctype.ini, /etc/php5/conf.d/dom.ini, /etc/php5/conf.d/gd.ini, /etc/php5/conf.d/hash.ini, /etc/php5/conf.d/iconv.ini, /etc/php5/conf.d/json.ini, /etc/php5/conf.d/mbstring.ini, /etc/php5/conf.d/mcrypt.ini, /etc/php5/conf.d/mysql.ini, /etc/php5/conf.d/mysqli.ini, /etc/php5/conf.d/pdo.ini, /etc/php5/conf.d/pdo_mysql.ini, /etc/php5/conf.d/pdo_sqlite.ini, /etc/php5/conf.d/sqlite.ini, /etc/php5/conf.d/tokenizer.ini, /etc/php5/conf.d/xmlreader.ini, /etc/php5/conf.d/xmlwriter.ini, /etc/php5/conf.d/zlib.ini 

PHP Core
allow_call_time_pass_reference	Off	
allow_url_fopen	On	
allow_url_include	Off	
always_populate_raw_post_data	Off	
arg_separator.input	&	
arg_separator.output	&	
asp_tags	Off	
auto_append_file	no value	
auto_globals_jit	On	
auto_prepend_file	no value	
browscap	no value	
default_charset	no value	
default_mimetype	text/html	
define_syslog_variables	Off	
disable_classes	no value	
disable_functions	no value	
display_errors	Off	
display_startup_errors	Off	
doc_root	no value	
docref_ext	no value	
docref_root	no value	
enable_dl	Off	
error_append_string	no value	
error_log	no value	
error_prepend_string	no value	
error_reporting	6135	
expose_php	On	
file_uploads	On	
html_errors	Off	
ignore_repeated_errors	Off	
ignore_repeated_source	Off	
ignore_user_abort	Off	
implicit_flush	Off	
log_errors	On	
log_errors_max_len	1024	
magic_quotes_gpc	Off	
magic_quotes_runtime	Off	
magic_quotes_sybase	Off	
mail.force_extra_parameters	no value	
max_execution_time	0	
max_input_nesting_level	64	
max_input_time	60	
memory_limit	128M	
open_basedir	no value	
output_buffering	4096	
output_handler	no value	
post_max_size	8M	
precision	14	
register_argc_argv	Off	
register_globals	Off	
register_long_arrays	Off	
report_memleaks	On	
report_zend_debug	On	
safe_mode	Off	
safe_mode_exec_dir	no value	
safe_mode_gid	Off	
safe_mode_include_dir	no value	
sendmail_from	no value	
serialize_precision	100	100
short_open_tag	Off	
sql.safe_mode	Off	
suhosin.log.phpscript	0	
suhosin.log.phpscript.is_safe	Off	
suhosin.log.phpscript.name	no value	
suhosin.log.sapi	no value	
suhosin.log.script	no value	
suhosin.log.script.name	no value	
suhosin.log.syslog	no value	
suhosin.log.syslog.facility	no value	
suhosin.log.syslog.priority	no value	
suhosin.log.use-x-forwarded-for	Off	
track_errors	Off	
unserialize_callback_func	no value	
upload_max_filesize	2M	2M
variables_order	GPCS	
xmlrpc_error_number	0	
xmlrpc_errors	Off	
y2k_compliance	On	
zend.ze1_compatibility_mode	Off	

Apache
Loaded Modules 	
core prefork http_core mod_so mod_authz_host mod_actions mod_alias mod_auth_basic mod_authz_groupfile mod_authn_file mod_authz_user mod_autoindex mod_cgi mod_dir mod_include mod_log_config mod_mime mod_negotiation mod_setenvif mod_status mod_userdir mod_asis mod_imagemap mod_php5 mod_authz_default 

HTTP_ACCEPT_LANGUAGE 	de-de,de;q=0.8,en-us;q=0.5,en;q=0.3 
HTTP_ACCEPT_ENCODING 	gzip,deflate 
HTTP_ACCEPT_CHARSET 	ISO-8859-1,utf-8;q=0.7,*;q=0.7 
Accept 	application/x-shockwave-flash,text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
__________________
RL sux big time... auch 2012!

Deleting pr0n is like killing your best friend

[HaBo] bei Facebook - Werde Fan
Mackz ist offline   Mit Zitat antworten
Alt 30.06.08, 23:55   #13 (permalink)
404
 
Benutzerbild von 404
 
Registriert seit: 28.11.04
404 Leistung: Z3
404 eine Nachricht über ICQ schicken
Likes: 0
Standard

Woran das liegt kann ich dir leider auch nicht sagen. Allerdings hab ich vor langer Zeit mal n kleines Tool geschrieben, um 2 phpinfo files zu vergleichen.

Vielleicht findest du so schneller die entsprechenden Unterschiede in deiner Configuration.

good luck
Angehängte Dateien
Dateityp: rar compare_phpinfo.rar (1,8 KB, 1x aufgerufen)
__________________
Major Fault, General Error and Colonel Panic came together to celebrate timeout.


------------------------------------------------
http://www.shick.de/
------------------------------------------------
404 ist offline   Mit Zitat antworten
Alt 01.07.08, 00:31   #14 (permalink)
 
Benutzerbild von metax.
 
Registriert seit: 22.01.07
metax. Leistung: 8086
metax. eine Nachricht über ICQ schicken
Likes: 10
Standard

Ich habe mal nach der INI-Option "auto_globals_jit" gegooglet, weil ich die nicht kannte.
Offenbar werden mit auto_globals_jit=on die Autoglobalen erst erzeugt, wenn sie gebraucht werden. Anscheinend hatten einige Leute Probleme mit leeren Autoglobalen, wenn die Option aktiviert war.
Probier doch mal, auto_globals_jit auf OFF zu stellen.

mfg, metax.
__________________
Wenn keiner zuschaut, teile ich heimlich durch Null!
Meine Homepage: Planet Metax | meine Bilder: DeviantArt | Twitter
metax. ist offline   Mit Zitat antworten
Alt 02.07.08, 20:14   #15 (permalink)
Administrator
Themenstarter
 
Benutzerbild von Mackz
 
Registriert seit: 02.10.01
Mackz Leistung: Pentium IMackz Leistung: Pentium I
Likes: 30
Standard

Zitat:
Original von metax.
Probier doch mal, auto_globals_jit auf OFF zu stellen.
Sehr gute Idee, diese Option kannte ich auch noch nicht!
Bringt nur leider nichts
__________________
RL sux big time... auch 2012!

Deleting pr0n is like killing your best friend

[HaBo] bei Facebook - Werde Fan
Mackz ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Web, Network & Multimedia Palace » (Web-) Design und webbasierte Sprachen » PHP5 ignoriert einfache Anführungszeichen
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
scanf wird bei jedem 2. Aufruf ignoriert ente Code Kitchen 4 23.10.07 21:57
PHP5 als CGI... keksinat0r (Web-) Design und webbasierte Sprachen 8 08.08.07 21:45
post_vars() bei PHP5? NMK (Web-) Design und webbasierte Sprachen 30 06.07.06 21:03
Windows XP ignoriert "Beenden" JeffChef Windows 4 27.09.03 13:47
Netscape ignoriert Sicherheitsloch: Zugriff auf lokale Daten möglich Tec News & Ankündigungen 0 01.05.02 14:19


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61