php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #60692 Condition with ? and : won't echo everything before the ; sign
Submitted: 2012-01-09 20:04 UTC Modified: 2012-01-17 13:04 UTC
From: tremblay dot jf at gmail dot com Assigned:
Status: Not a bug Package: *Programming Data Structures
PHP Version: Irrelevant OS: Linux
Private report: No CVE-ID: None
 [2012-01-09 20:04 UTC] tremblay dot jf at gmail dot com
Description:
------------
PHP Version 5.2.6
The bug is found everytime.
My workaround is to put the condition between ().

Here is the phpinfo page:
PHP Version 5.2.6

System 	Linux *********** 2.4.21-27.0.2.EL #1 Wed Jan 12 23:46:37 EST 2005 i686
Build Date 	Jun 6 2011 15:47:39
Configure Command 	'./configure' '--prefix=/vdl' '--with-mysql=/vdl' '--with-apxs=/vdl/bin/apxs' '--with-config-file=/vdl/conf' '--with-gd' '--with-zlib-dir=/usr/include' '--with-jpeg-dir=/usr/include' '--with-pdflib=/vdl' '--with-freetype-dir=/vdl' '--with-snmp' '--enable-ucd-snmp-hack' '--enable-memory-limit' '--with-libxml-dir=/vdl' '--enable-mbstring' '--enable-ftp' '--with-mssql=/vdl'
Server API 	Apache
Virtual Directory Support 	disabled
Configuration File (php.ini) Path 	/vdl/lib
Loaded Configuration File 	/vdl/lib/etc/php.ini
PHP API 	20041225
PHP Extension 	20060613
Zend Extension 	220060519
Debug Build 	no
Thread Safety 	disabled
Zend Memory Manager 	enabled
IPv6 Support 	enabled
Registered PHP Streams 	php, file, data, http, ftp, compress.zlib
Registered Stream Socket Transports 	tcp, udp, unix, udg
Registered Stream Filters 	string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed, convert.iconv.*, zlib.*

Zend logo This program makes use of the Zend Scripting Language Engine:
Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies
    with Zend Extension Manager v1.2.2, Copyright (c) 2003-2007, by Zend Technologies

PHP Credits
Configuration
PHP Core
Directive	Local Value	Master Value
allow_call_time_pass_reference	On	On
allow_url_fopen	On	On
allow_url_include	On	On
always_populate_raw_post_data	Off	Off
arg_separator.input	&	&
arg_separator.output	&	&
asp_tags	Off	Off
auto_append_file	no value	no value
auto_globals_jit	On	On
auto_prepend_file	no value	no value
browscap	no value	no value
default_charset	iso-8859-1	iso-8859-1
default_mimetype	text/html	text/html
define_syslog_variables	Off	Off
disable_classes	no value	no value
disable_functions	no value	no value
display_errors	On	On
display_startup_errors	Off	Off
doc_root	no value	no value
docref_ext	no value	no value
docref_root	no value	no value
enable_dl	On	On
error_append_string	no value	no value
error_log	no value	no value
error_prepend_string	no value	no value
error_reporting	6135	6135
expose_php	On	On
extension_dir	./	./
file_uploads	On	On
highlight.bg	#FFFFFF	#FFFFFF
highlight.comment	#FF8000	#FF8000
highlight.default	#0000BB	#0000BB
highlight.html	#000000	#000000
highlight.keyword	#007700	#007700
highlight.string	#DD0000	#DD0000
html_errors	On	On
ignore_repeated_errors	Off	Off
ignore_repeated_source	Off	Off
ignore_user_abort	Off	Off
implicit_flush	On	On
include_path	.:/vdl/lib/php	.:/vdl/lib/php
log_errors	Off	Off
log_errors_max_len	1024	1024
magic_quotes_gpc	Off	On
magic_quotes_runtime	Off	Off
magic_quotes_sybase	Off	Off
mail.force_extra_parameters	no value	no value
max_execution_time	600	600
max_input_nesting_level	64	64
max_input_time	600	600
memory_limit	750M	750M
open_basedir	no value	no value
output_buffering	no value	no value
output_handler	no value	no value
post_max_size	128M	128M
precision	12	12
realpath_cache_size	16K	16K
realpath_cache_ttl	120	120
register_argc_argv	On	On
register_globals	On	On
register_long_arrays	On	On
report_memleaks	On	On
report_zend_debug	On	On
safe_mode	Off	Off
safe_mode_exec_dir	no value	no value
safe_mode_gid	Off	Off
safe_mode_include_dir	no value	no value
sendmail_from	no value	no value
sendmail_path	/usr/sbin/sendmail -t -i	/usr/sbin/sendmail -t -i
serialize_precision	100	100
short_open_tag	On	On
SMTP	localhost	localhost
smtp_port	25	25
sql.safe_mode	Off	Off
track_errors	On	On
unserialize_callback_func	no value	no value
upload_max_filesize	128M	128M
upload_tmp_dir	no value	no value
user_dir	no value	no value
variables_order	EGPCS	EGPCS
xmlrpc_error_number	0	0
xmlrpc_errors	Off	Off
y2k_compliance	On	On
zend.ze1_compatibility_mode	Off	Off

apache
APACHE_INCLUDE 	no value
APACHE_TARGET 	no value
Apache Version 	Apache/1.3.37 (Unix) PHP/5.2.6
Apache Release 	10337100
Apache API Version 	19990320
Hostname:Port 	**************************
User/Group 	nobody(99)/100
Max Requests 	Per Child: 250 - Keep Alive: on - Max Per Connection: 5000
Timeouts 	Connection: 180 - Keep-Alive: 15
Server Root 	/vdl
Loaded Modules 	mod_php5, mod_setenvif, mod_so, mod_auth, mod_access, mod_rewrite, mod_alias, mod_userdir, mod_speling, mod_actions, mod_imap, mod_asis, mod_cgi, mod_dir, mod_autoindex, mod_include, mod_info, mod_status, mod_negotiation, mod_mime, mod_log_referer, mod_log_agent, mod_log_config, mod_env, mod_vhost_alias, http_core

Directive	Local Value	Master Value
child_terminate	0	0
engine	1	1
last_modified	0	0
xbithack	0	0

Apache Environment
Variable	Value
DOCUMENT_ROOT 	******************
HTTP_ACCEPT 	text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
HTTP_ACCEPT_CHARSET 	ISO-8859-1,utf-8;q=0.7,*;q=0.7
HTTP_ACCEPT_ENCODING 	gzip, deflate
HTTP_ACCEPT_LANGUAGE 	fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3
HTTP_CONNECTION 	keep-alive
HTTP_COOKIE 	ISPSMSESS_devshed_labaie_vdl=17d971be12dd5338de268a56d404089b
HTTP_HOST 	devshed.labaie.vdl
HTTP_USER_AGENT 	Mozilla/5.0 (Windows NT 5.1; rv:9.0.1) Gecko/20100101 Firefox/9.0.1
PATH 	/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin
REMOTE_ADDR 	172.16.1.99
REMOTE_PORT 	3932
SCRIPT_FILENAME 	****************
SERVER_ADDR 	172.16.1.105
SERVER_ADMIN 	sysadmin@destination.ca
SERVER_NAME 	devshed.labaie.vdl
SERVER_PORT 	80
SERVER_SIGNATURE 	<ADDRESS>Apache/1.3.37 Server at devshed.labaie.vdl Port 80</ADDRESS>
SERVER_SOFTWARE 	Apache/1.3.37 (Unix) PHP/5.2.6
GATEWAY_INTERFACE 	CGI/1.1
SERVER_PROTOCOL 	HTTP/1.1
REQUEST_METHOD 	GET
QUERY_STRING 	no value
REQUEST_URI 	/phpinfo.php
SCRIPT_NAME 	/phpinfo.php

HTTP Headers Information
HTTP Request Headers
HTTP Request 	GET /phpinfo.php HTTP/1.1
Accept 	text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Charset 	ISO-8859-1,utf-8;q=0.7,*;q=0.7
Accept-Encoding 	gzip, deflate
Accept-Language 	fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3
Connection 	keep-alive
Cookie 	ISPSMSESS_devshed_labaie_vdl=17d971be12dd5338de268a56d404089b
Host 	devshed.labaie.vdl
User-Agent 	Mozilla/5.0 (Windows NT 5.1; rv:9.0.1) Gecko/20100101 Firefox/9.0.1
HTTP Response Headers
X-Powered-By 	PHP/5.2.6
Keep-Alive 	timeout=15, max=5000
Connection 	Keep-Alive
Transfer-Encoding 	chunked
Content-Type 	text/html; charset=iso-8859-1

ctype
ctype functions 	enabled

date
date/time support 	enabled
"Olson" Timezone Database Version 	2008.2
Timezone Database 	internal
Default timezone 	America/New_York

Directive	Local Value	Master Value
date.default_latitude	31.7667	31.7667
date.default_longitude	35.2333	35.2333
date.sunrise_zenith	90.583333	90.583333
date.sunset_zenith	90.583333	90.583333
date.timezone	no value	no value

dom
DOM/XML 	enabled
DOM/XML API Version 	20031129
libxml Version 	2.6.29
HTML Support 	enabled
XPath Support 	enabled
XPointer Support 	enabled
Schema Support 	enabled
RelaxNG Support 	enabled

filter
Input Validation and Filtering 	enabled
Revision 	$Revision: 1.52.2.42 $

Directive	Local Value	Master Value
filter.default	unsafe_raw	unsafe_raw
filter.default_flags	no value	no value

ftp
FTP support 	enabled

gd
GD Support 	enabled
GD Version 	bundled (2.0.34 compatible)
FreeType Support 	enabled
FreeType Linkage 	with freetype
FreeType Version 	2.1.10
GIF Read Support 	enabled
GIF Create Support 	enabled
JPG Support 	enabled
PNG Support 	enabled
WBMP Support 	enabled
XBM Support 	enabled

hash
hash support 	enabled
Hashing Engines 	md2 md4 md5 sha1 sha256 sha384 sha512 ripemd128 ripemd160 ripemd256 ripemd320 whirlpool tiger128,3 tiger160,3 tiger192,3 tiger128,4 tiger160,4 tiger192,4 snefru gost adler32 crc32 crc32b haval128,3 haval160,3 haval192,3 haval224,3 haval256,3 haval128,4 haval160,4 haval192,4 haval224,4 haval256,4 haval128,5 haval160,5 haval192,5 haval224,5 haval256,5

iconv
iconv support 	enabled
iconv implementation 	glibc
iconv library version 	2.3.2

Directive	Local Value	Master Value
iconv.input_encoding	ISO-8859-1	ISO-8859-1
iconv.internal_encoding	ISO-8859-1	ISO-8859-1
iconv.output_encoding	ISO-8859-1	ISO-8859-1

json
json support 	enabled
json version 	1.2.1

libxml
libXML support 	active
libXML Version 	2.6.29
libXML streams 	enabled

mbstring
Multibyte Support 	enabled
Multibyte string engine 	libmbfl
Multibyte (japanese) regex support 	enabled
Multibyte regex (oniguruma) version 	4.4.4
Multibyte regex (oniguruma) backtrack check 	On

mbstring extension makes use of "streamable kanji code filter and converter", which is distributed under the GNU Lesser General Public License version 2.1.

Directive	Local Value	Master Value
mbstring.detect_order	no value	no value
mbstring.encoding_translation	Off	Off
mbstring.func_overload	0	0
mbstring.http_input	pass	pass
mbstring.http_output	pass	pass
mbstring.internal_encoding	ISO-8859-1	no value
mbstring.language	neutral	neutral
mbstring.strict_detection	Off	Off
mbstring.substitute_character	no value	no value

mssql
MSSQL Support	enabled
Active Persistent Links 	0
Active Links 	0
Library version 	FreeTDS

Directive	Local Value	Master Value
mssql.allow_persistent	On	On
mssql.batchsize	0	0
mssql.charset	no value	no value
mssql.compatability_mode	Off	Off
mssql.connect_timeout	5	5
mssql.datetimeconvert	On	On
mssql.max_links	Unlimited	Unlimited
mssql.max_persistent	Unlimited	Unlimited
mssql.max_procs	Unlimited	Unlimited
mssql.min_error_severity	10	10
mssql.min_message_severity	10	10
mssql.secure_connection	Off	Off
mssql.textlimit	Server default	Server default
mssql.textsize	Server default	Server default
mssql.timeout	60	60

mysql
MySQL Support	enabled
Active Persistent Links 	0
Active Links 	0
Client API version 	4.1.19
MYSQL_MODULE_TYPE 	external
MYSQL_SOCKET 	/tmp/mysql.sock
MYSQL_INCLUDE 	-I/vdl/include/mysql
MYSQL_LIBS 	-L/vdl/lib/mysql -lmysqlclient

Directive	Local Value	Master Value
mysql.allow_persistent	On	On
mysql.connect_timeout	60	60
mysql.default_host	no value	no value
mysql.default_password	no value	no value
mysql.default_port	no value	no value
mysql.default_socket	no value	no value
mysql.default_user	no value	no value
mysql.max_links	Unlimited	Unlimited
mysql.max_persistent	Unlimited	Unlimited
mysql.trace_mode	Off	Off

pcre
PCRE (Perl Compatible Regular Expressions) Support 	enabled
PCRE Library Version 	7.6 2008-01-28

Directive	Local Value	Master Value
pcre.backtrack_limit	100000	100000
pcre.recursion_limit	100000	100000

PDO
PDO support	enabled
PDO drivers 	sqlite2, sqlite

pdo_sqlite
PDO Driver for SQLite 3.x	enabled
PECL Module version 	(bundled) 1.0.1 $Id: pdo_sqlite.c,v 1.10.2.6.2.3 2007/12/31 07:20:10 sebastian Exp $
SQLite Library 	3.3.7

posix
Revision 	$Revision: 1.70.2.3.2.18 $

Reflection
Reflection	enabled
Version 	$Id: php_reflection.c,v 1.164.2.33.2.50 2008/03/13 15:56:21 iliaa Exp $

session
Session Support 	enabled
Registered save handlers 	files user sqlite
Registered serializer handlers 	php php_binary

Directive	Local Value	Master Value
session.auto_start	Off	Off
session.bug_compat_42	On	On
session.bug_compat_warn	On	On
session.cache_expire	180	180
session.cache_limiter	nocache	nocache
session.cookie_domain	no value	no value
session.cookie_httponly	Off	Off
session.cookie_lifetime	0	0
session.cookie_path	/	/
session.cookie_secure	Off	Off
session.entropy_file	no value	no value
session.entropy_length	0	0
session.gc_divisor	100	100
session.gc_maxlifetime	86400	86400
session.gc_probability	1	1
session.hash_bits_per_character	4	4
session.hash_function	0	0
session.name	PHPSESSID	PHPSESSID
session.referer_check	no value	no value
session.save_handler	files	files
session.save_path	/vdl/www/session	/vdl/www/session
session.serialize_handler	php	php
session.use_cookies	On	On
session.use_only_cookies	Off	Off
session.use_trans_sid	0	0

SimpleXML
Simplexml support	enabled
Revision 	$Revision: 1.151.2.22.2.39 $
Schema support 	enabled

snmp
NET-SNMP Support 	enabled
NET-SNMP Version 	5.0.9

SPL
SPL support	enabled
Interfaces 	Countable, OuterIterator, RecursiveIterator, SeekableIterator, SplObserver, SplSubject
Classes 	AppendIterator, ArrayIterator, ArrayObject, BadFunctionCallException, BadMethodCallException, CachingIterator, DirectoryIterator, DomainException, EmptyIterator, FilterIterator, InfiniteIterator, InvalidArgumentException, IteratorIterator, LengthException, LimitIterator, LogicException, NoRewindIterator, OutOfBoundsException, OutOfRangeException, OverflowException, ParentIterator, RangeException, RecursiveArrayIterator, RecursiveCachingIterator, RecursiveDirectoryIterator, RecursiveFilterIterator, RecursiveIteratorIterator, RecursiveRegexIterator, RegexIterator, RuntimeException, SimpleXMLIterator, SplFileInfo, SplFileObject, SplObjectStorage, SplTempFileObject, UnderflowException, UnexpectedValueException

SQLite
SQLite support	enabled
PECL Module version 	2.0-dev $Id: sqlite.c,v 1.166.2.13.2.10 2007/12/31 07:20:11 sebastian Exp $
SQLite Library 	2.8.17
SQLite Encoding 	iso8859

Directive	Local Value	Master Value
sqlite.assoc_case	0	0

standard
Regex Library 	Bundled library enabled
Dynamic Library Support 	enabled
Path to sendmail 	/usr/sbin/sendmail -t -i

Directive	Local Value	Master Value
assert.active	1	1
assert.bail	0	0
assert.callback	no value	no value
assert.quiet_eval	0	0
assert.warning	1	1
auto_detect_line_endings	0	0
default_socket_timeout	60	60
safe_mode_allowed_env_vars	PHP_	PHP_
safe_mode_protected_env_vars	LD_LIBRARY_PATH	LD_LIBRARY_PATH
url_rewriter.tags	a=href,area=href,frame=src,input=src,form=,fieldset=	a=href,area=href,frame=src,input=src,form=,fieldset=
user_agent	no value	no value

tokenizer
Tokenizer Support 	enabled

xml
XML Support 	active
XML Namespace Support 	active
libxml2 Version 	2.6.29

xmlreader
XMLReader 	enabled

xmlwriter
XMLWriter 	enabled

zlib
ZLib Support 	enabled
Stream Wrapper support 	compress.zlib://
Stream Filter support 	zlib.inflate, zlib.deflate
Compiled Version 	1.1.4
Linked Version 	1.2.3

Directive	Local Value	Master Value
zlib.output_compression	Off	Off
zlib.output_compression_level	-1	-1
zlib.output_handler	no value	no value

Additional Modules
Module Name

Environment
Variable	Value
HOSTNAME 	*******
SHELL 	/bin/bash
TERM 	vt100
HISTSIZE 	1000
SSH_CLIENT 	172.16.1.143 3229 22
QTDIR 	/usr/lib/qt-3.1
SSH_TTY 	/dev/pts/12
USER 	root
LS_COLORS 	no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=01;32:*.cmd=01;32:*.exe=01;32:*.com=01;32:*.btm=01;32:*.bat=01;32:*.sh=01;32:*.csh=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.bz=01;31:*.tz=01;31:*.rpm=01;31:*.cpio=01;31:*.jpg=01;35:*.gif=01;35:*.bmp=01;35:*.xbm=01;35:*.xpm=01;35:*.png=01;35:*.tif=01;35:
SUDO_USER 	jonathanl
SUDO_UID 	503
PATH 	/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin
MAIL 	/var/spool/mail/jonathanl
PWD 	/etc
INPUTRC 	/etc/inputrc
JAVA_HOME 	/opt/java/j2sdk1.4.2
LANG 	en_US
LAMHELPFILE 	/etc/lam/lam-helpfile
SSH_ASKPASS 	/usr/libexec/openssh/gnome-ssh-askpass
SUDO_COMMAND 	/etc/rc.d/init.d/httpd restart
HOME 	/home/jonathanl
SHLVL 	2
LOGNAME 	root
SSH_CONNECTION 	172.16.1.143 3229 172.16.1.105 22
LESSOPEN 	|/usr/bin/lesspipe.sh %s
SUDO_GID 	100
G_BROKEN_FILENAMES 	1
_ 	/sbin/initlog

Test script:
---------------
//Exemple:

//1)
echo "Step 1)\n<br/>";
unset($foe);
echo $foe ? "bar" : "foe" . " days";
//This will echo "foe"

//2)
echo "Step 2)\n<br/>";
unset($foe);
echo ($foe ? "bar" : "foe") . " days";
//This will echo "foe days"

//Please check if it would be possible that step 1) will ever work somedays?

Expected result:
----------------
Step 1) should echo "foe days".
Step 2) echo "foe days".

Actual result:
--------------
Step 1) echo "foe".
Step 2) echo "foe days".

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2012-01-09 23:27 UTC] anon at anon dot anon
Are you sure? I downloaded the same old version of PHP and the step 1 code always echos "foe days", correctly, NEVER "foe".

In case you mixed up your strings, it will produce just "bar" rather than "bar days" if $foe is set, yes, but that is not a bug. See the operator precedence table:
http://www.php.net/manual/en/language.operators.precedence.php

'?:' occurs lower down the table than '.', which means concatenation is considered first. So this expression:

$foe ? "bar" : "foe" . " days"

is considered as if it were this:

$foe ? "bar" : ("foe" . " days")

So it will evaluate to either "bar" or "foe days".
 [2012-01-17 13:04 UTC] mike@php.net
Sorry, but your problem does not imply a bug in PHP itself.  For a
list of more appropriate places to ask for help using PHP, please
visit http://www.php.net/support.php as this bug system is not the
appropriate forum for asking support questions.  Due to the volume
of reports we can not explain in detail here why your report is not
a bug.  The support channels will be able to provide an explanation
for you.

Thank you for your interest in PHP.


 [2012-01-17 13:04 UTC] mike@php.net
-Status: Open +Status: Bogus
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Sat Dec 21 12:01:31 2024 UTC