Same PHP code works on a AWS LAMP stack but not on my W(IIS)MP.RSS

3 replies

Last post Nov 24, 2013 07:14 PM by tserva

  • Same PHP code works on a AWS LAMP stack but not on my W(IIS)MP.

    Nov 20, 2013 05:24 PM|tserva|LINK

    I need to get some PHP code working on our WAMP. It works as is on an Amazon AWS instance running a LAMP stack. So I have to assume it is the php/iis config.  I used the http://php.iis.net/install. We opened up the firewall wide on this server and got the same error. So it is not the firewall. It is not the code because the code works on the AWS server.

    Thanks in advance. Any help is appreciated!

    The code crafts a url and it :

    • generates a random number, encrypts the number with AES encryption using the first secret password and initialization vector (IV), and sends a request to target site with certain parameters.
    • involves exchanging and verifying random AES-encrypted tokens via HTTPS between the target site and our server.
    • The target server, decrypts the string, generates a second random number, concatenates it to the end of the first number (separated by a dash), and encrypts the number with AES again, using the second secret password and initialization vector (IV).  dotloop returns the key, requestID, and the information sent originally (for verification purposes).  The response is in a JSON-formatted string 
    • Then our server decrypts the key, compares the first part of the key (the value before the dash (-) in the decrypted key) with the number originally sent.  If they key matches the original random number initially sent to target server, then the process continues.  Our server then re-encrypts the second number (the number generated by dotloop), and uses this as a parameter on the Single Sign-On request URL.
    • the request header needs to be set as JSON in all requests with target server system

    Fatal error: Call to a member function getUid() on a non-object in C:\inetpub\wwwroot\sso\SingleSignOn.php on line 75



    Here is the phpinfp() output for the one that works.

    http://dotloop-env.elasticbeanstalk.com/info.php (this will not always be available.)

    How can I compare phpinfo() outputs to make sure that PHP on IIS is configured similarly? What am I missing?

     

    Here is a redacted phpinfo() from the IIS server:

    PHP Logo
    PHP Version 5.4.14
    
    
    System	Windows NT WEB3 6.1 build 7601 (Windows Server 2008 R2 Standard Edition Service Pack 1) i586
    Build Date	Apr 10 2013 21:15:43
    Compiler	MSVC9 (Visual C++ 2008)
    Architecture	x86
    Configure Command	cscript /nologo configure.js "--enable-snapshot-build" "--enable-debug-pack" "--disable-zts" "--disable-isapi" "--disable-nsapi" "--without-mssql" "--without-pdo-mssql" "--without-pi3web" "--with-pdo-oci=C:\php-sdk\oracle\instantclient10\sdk,shared" "--with-oci8=C:\php-sdk\oracle\instantclient10\sdk,shared" "--with-oci8-11g=C:\php-sdk\oracle\instantclient11\sdk,shared" "--with-enchant=shared" "--enable-object-out-dir=../obj/" "--enable-com-dotnet=shared" "--with-mcrypt=static" "--disable-static-analyze" "--with-pgo"
    Server API	CGI/FastCGI
    Virtual Directory Support	disabled
    Configuration File (php.ini) Path	C:\Windows
    Loaded Configuration File	C:\Program Files (x86)\PHP\v5.4\php.ini
    Scan this dir for additional .ini files	(none)
    Additional .ini files parsed	(none)
    PHP API	20100412
    PHP Extension	20100525
    Zend Extension	220100525
    Zend Extension Build	API220100525,NTS,VC9
    PHP Extension Build	API20100525,NTS,VC9
    Debug Build	no
    Thread Safety	disabled
    Zend Signal Handling	disabled
    Zend Memory Manager	enabled
    Zend Multibyte Support	provided by mbstring
    IPv6 Support	enabled
    DTrace Support	disabled
    Registered PHP Streams	php, file, glob, data, http, ftp, zip, compress.zlib, compress.bzip2, https, ftps, sqlsrv, phar
    Registered Stream Socket Transports	tcp, udp, ssl, sslv3, sslv2, tls
    Registered Stream Filters	convert.iconv.*, mcrypt.*, mdecrypt.*, string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed, dechunk, zlib.*, bzip2.*
    
    Zend logo This program makes use of the Zend Scripting Language Engine:
    Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
    
    PHP Credits
    
    Configuration
    
    bcmath
    
    BCMath support	enabled
    
    Directive	Local Value	Master Value
    bcmath.scale	0	0
    
    bz2
    
    BZip2 Support	Enabled
    Stream Wrapper support	compress.bzip2://
    Stream Filter support	bzip2.decompress, bzip2.compress
    BZip2 Version	1.0.6, 6-Sept-2010
    
    calendar
    
    Calendar support	enabled
    
    cgi-fcgi
    
    Directive	Local Value	Master Value
    cgi.check_shebang_line	1	1
    cgi.discard_path	0	0
    cgi.fix_pathinfo	1	1
    cgi.force_redirect	0	0
    cgi.nph	0	0
    cgi.redirect_status_env	no value	no value
    cgi.rfc2616_headers	0	0
    fastcgi.impersonate	1	1
    fastcgi.logging	1	1
    
    com_dotnet
    
    COM support	enabled
    DCOM support	disabled
    .Net support	enabled
    
    Directive	Local Value	Master Value
    com.allow_dcom	0	0
    com.autoregister_casesensitive	1	1
    com.autoregister_typelib	0	0
    com.autoregister_verbose	0	0
    com.code_page	no value	no value
    com.typelib_file	no value	no value
    
    Core
    
    PHP Version	5.4.14
    
    Directive	Local Value	Master Value
    allow_url_fopen	On	On
    allow_url_include	Off	Off
    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	no value	no value
    default_mimetype	text/html	text/html
    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	Off	Off
    enable_post_data_reading	On	On
    error_append_string	no value	no value
    error_log	C:\Windows\temp\php54_errors.log	C:\Windows\temp\php54_errors.log
    error_prepend_string	no value	no value
    error_reporting	32767	32767
    exit_on_timeout	Off	Off
    expose_php	On	On
    extension_dir	C:\Program Files (x86)\PHP\v5.4\ext\	C:\Program Files (x86)\PHP\v5.4\ext\
    file_uploads	On	On
    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	Off	Off
    include_path	.;C:\php\pear	.;C:\php\pear
    log_errors	On	On
    log_errors_max_len	1024	1024
    mail.add_x_header	On	On
    mail.force_extra_parameters	no value	no value
    mail.log	no value	no value
    max_execution_time	300	300
    max_file_uploads	20	20
    max_input_nesting_level	64	64
    max_input_time	60	60
    max_input_vars	1000	1000
    memory_limit	128M	128M
    open_basedir	no value	no value
    output_buffering	4096	4096
    output_handler	no value	no value
    post_max_size	8M	8M
    precision	14	14
    realpath_cache_size	16K	16K
    realpath_cache_ttl	120	120
    register_argc_argv	Off	Off
    report_memleaks	On	On
    report_zend_debug	On	On
    request_order	GP	GP
    sendmail_from	no value	no value
    sendmail_path	no value	no value
    serialize_precision	17	17
    short_open_tag	Off	Off
    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	2M	2M
    upload_tmp_dir	C:\Windows\temp	C:\Windows\temp
    user_dir	no value	no value
    user_ini.cache_ttl	300	300
    user_ini.filename	.user.ini	.user.ini
    variables_order	GPCS	GPCS
    windows.show_crt_warning	Off	Off
    xmlrpc_error_number	0	0
    xmlrpc_errors	Off	Off
    zend.detect_unicode	On	On
    zend.enable_gc	On	On
    zend.multibyte	Off	Off
    zend.script_encoding	no value	no value
    
    ctype
    
    ctype functions	enabled
    
    curl
    
    cURL support	enabled
    cURL Information	7.29.0
    Age	3
    Features
    AsynchDNS	Yes
    Debug	No
    GSS-Negotiate	Yes
    IDN	No
    IPv6	Yes
    Largefile	Yes
    NTLM	Yes
    SPNEGO	Yes
    SSL	Yes
    SSPI	Yes
    krb4	No
    libz	Yes
    CharConv	No
    Protocols	dict, file, ftp, ftps, gopher, http, https, imap, imaps, ldap, pop3, pop3s, rtsp, scp, sftp, smtp, smtps, telnet, tftp
    Host	i386-pc-win32
    SSL Version	OpenSSL/0.9.8y
    ZLib Version	1.2.7
    libSSH Version	libssh2/1.4.2
    
    date
    
    date/time support	enabled
    "Olson" Timezone Database Version	2013.2
    Timezone Database	internal
    Default timezone	US/Central
    
    Directive	Local Value	Master Value
    <removed>
    date.timezone	US/Central	US/Central
    
    dom
    
    DOM/XML	enabled
    DOM/XML API Version	20031129
    libxml Version	2.7.8
    HTML Support	enabled
    XPath Support	enabled
    XPointer Support	enabled
    Schema Support	enabled
    RelaxNG Support	enabled
    
    enchant
    
    enchant support	enabled
    Version	1.1.0
    Libenchant Version	1.5.0 or later
    Revision	$Id: e4b42637663d493f1bffce5954e74833fbba2af0 $
    
    
    ereg
    
    Regex Library	Bundled library enabled
    
    exif
    
    EXIF Support	enabled
    EXIF Version	1.4 $Id$
    Supported EXIF Version	0220
    Supported filetypes	JPEG,TIFF
    
    Directive	Local Value	Master Value
    exif.decode_jis_intel	JIS	JIS
    exif.decode_jis_motorola	JIS	JIS
    exif.decode_unicode_intel	UCS-2LE	UCS-2LE
    exif.decode_unicode_motorola	UCS-2BE	UCS-2BE
    exif.encode_jis	no value	no value
    exif.encode_unicode	ISO-8859-15	ISO-8859-15
    
    fileinfo
    
    fileinfo support	enabled
    version	1.0.5
    
    filter
    
    Input Validation and Filtering	enabled
    Revision	$Id: 2aa8dd57d9c0c655cd45e6e5872bb95fa5ad76cf $
    
    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.4.10
    GIF Read Support	enabled
    GIF Create Support	enabled
    JPEG Support	enabled
    libJPEG Version	8
    PNG Support	enabled
    libPNG Version	1.2.50
    WBMP Support	enabled
    XPM Support	enabled
    libXpm Version	30411
    XBM Support	enabled
    
    Directive	Local Value	Master Value
    gd.jpeg_ignore_warning	0	0
    
    gettext
    
    GetText Support	enabled
    
    gmp
    
    gmp support	enabled
    MPIR version	2.5.1
    
    hash
    
    hash support	enabled
    Hashing Engines	md2 md4 md5 sha1 sha224 sha256 sha384 sha512 ripemd128 ripemd160 ripemd256 ripemd320 whirlpool tiger128,3 tiger160,3 tiger192,3 tiger128,4 tiger160,4 tiger192,4 snefru snefru256 gost adler32 crc32 crc32b fnv132 fnv164 joaat 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	"libiconv"
    iconv library version	1.14
    
    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
    
    imap
    
    IMAP c-Client Version	2007e
    SSL Support	enabled
    
    intl
    
    Internationalization support	enabled
    version	1.1.0
    ICU version	49.1.2
    ICU Data version	49.1.2
    
    Directive	Local Value	Master Value
    intl.default_locale	no value	no value
    intl.error_level	0	0
    
    json
    
    json support	enabled
    json version	1.2.1
    
    libxml
    
    libXML support	active
    libXML Compiled Version	2.7.8
    libXML Loaded Version	20708
    libXML streams	enabled
    
    mbstring
    
    Multibyte Support	enabled
    Multibyte string engine	libmbfl
    HTTP input encoding translation	disabled
    libmbfl version	1.3.2
    
    mbstring extension makes use of "streamable kanji code filter and converter", which is distributed under the GNU Lesser General Public License version 2.1.
    
    Multibyte (japanese) regex support	enabled
    Multibyte regex (oniguruma) version	4.7.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.http_output_conv_mimetypes	^(text/|application/xhtml\+xml)	^(text/|application/xhtml\+xml)
    mbstring.internal_encoding	no value	no value
    mbstring.language	neutral	neutral
    mbstring.strict_detection	Off	Off
    mbstring.substitute_character	no value	no value
    
    mcrypt
    
    mcrypt support	enabled
    mcrypt_filter support	enabled
    Version	2.5.8
    Api No	20021217
    Supported ciphers	cast-128 gost rijndael-128 twofish cast-256 loki97 rijndael-192 saferplus wake blowfish-compat des rijndael-256 serpent xtea blowfish enigma rc2 tripledes arcfour
    Supported modes	cbc cfb ctr ecb ncfb nofb ofb stream
    
    Directive	Local Value	Master Value
    mcrypt.algorithms_dir	no value	no value
    mcrypt.modes_dir	no value	no value
    
    mhash
    
    MHASH support	Enabled
    MHASH API Version	Emulated Support
    
    mysql
    
    MySQL Support	enabled
    Active Persistent Links	0
    Active Links	0
    Client API version	mysqlnd 5.0.10 - 20111026 - $Id: e707c415db32080b3752b232487a435ee0372157 $
    
    Directive	Local Value	Master Value
    mysql.allow_local_infile	On	On
    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
    
    mysqli
    
    MysqlI Support	enabled
    Client API library version	mysqlnd 5.0.10 - 20111026 - $Id: e707c415db32080b3752b232487a435ee0372157 $
    Active Persistent Links	0
    Inactive Persistent Links	0
    Active Links	0
    
    Directive	Local Value	Master Value
    mysqli.allow_local_infile	On	On
    mysqli.allow_persistent	On	On
    mysqli.default_host	no value	no value
    mysqli.default_port	3306	3306
    mysqli.default_pw	no value	no value
    mysqli.default_socket	no value	no value
    mysqli.default_user	no value	no value
    mysqli.max_links	Unlimited	Unlimited
    mysqli.max_persistent	Unlimited	Unlimited
    mysqli.reconnect	Off	Off
    
    mysqlnd
    
    mysqlnd	enabled
    Version	mysqlnd 5.0.10 - 20111026 - $Id: e707c415db32080b3752b232487a435ee0372157 $
    Compression	supported
    SSL	supported
    Command buffer size	4096
    Read buffer size	32768
    Read timeout	31536000
    Collecting statistics	Yes
    Collecting memory statistics	No
    Tracing	n/a
    Loaded plugins	mysqlnd,example,debug_trace,auth_plugin_mysql_native_password,auth_plugin_mysql_clear_password
    API Extensions	mysql,mysqli,pdo_mysql
    
    mysqlnd statistics	
    bytes_sent	19167
    bytes_received	593396
    packets_sent	298
    packets_received	3345
    protocol_overhead_in	13380
    protocol_overhead_out	1192
    bytes_received_ok_packet	0
    bytes_received_eof_packet	0
    bytes_received_rset_header_packet	1143
    bytes_received_rset_field_meta_packet	0
    bytes_received_rset_row_packet	893
    bytes_received_prepare_response_packet	60810
    bytes_received_change_user_packet	529519
    packets_sent_command	145
    packets_received_ok	0
    packets_received_eof	0
    packets_received_rset_header	127
    packets_received_rset_field_meta	0
    packets_received_rset_row	133
    packets_received_prepare_response	810
    packets_received_change_user	2263
    result_set_queries	123
    non_result_set_queries	10
    no_index_used	8
    bad_index_used	0
    slow_queries	0
    buffered_sets	123
    unbuffered_sets	0
    ps_buffered_sets	0
    ps_unbuffered_sets	0
    flushed_normal_sets	0
    flushed_ps_sets	0
    ps_prepared_never_executed	0
    ps_prepared_once_executed	0
    rows_fetched_from_server_normal	2140
    rows_fetched_from_server_ps	0
    rows_buffered_from_client_normal	2140
    rows_buffered_from_client_ps	0
    rows_fetched_from_client_normal_buffered	2140
    rows_fetched_from_client_normal_unbuffered	0
    rows_fetched_from_client_ps_buffered	0
    rows_fetched_from_client_ps_unbuffered	0
    rows_fetched_from_client_ps_cursor	0
    rows_affected_normal	2
    rows_affected_ps	0
    rows_skipped_normal	2140
    rows_skipped_ps	0
    copy_on_write_saved	2907
    copy_on_write_performed	4589
    command_buffer_too_small	0
    connect_success	4
    connect_failure	0
    connection_reused	0
    reconnect	0
    pconnect_success	0
    active_connections	18446744073709551612
    active_persistent_connections	0
    explicit_close	4
    implicit_close	0
    disconnect_close	0
    in_middle_of_command_close	0
    explicit_free_result	123
    implicit_free_result	0
    explicit_stmt_close	0
    implicit_stmt_close	0
    mem_emalloc_count	0
    mem_emalloc_amount	0
    mem_ecalloc_count	0
    mem_ecalloc_amount	0
    mem_erealloc_count	0
    mem_erealloc_amount	0
    mem_efree_count	0
    mem_efree_amount	0
    mem_malloc_count	0
    mem_malloc_amount	0
    mem_calloc_count	0
    mem_calloc_amount	0
    mem_realloc_count	0
    mem_realloc_amount	0
    mem_free_count	0
    mem_free_amount	0
    mem_estrndup_count	0
    mem_strndup_count	0
    mem_estndup_count	0
    mem_strdup_count	0
    proto_text_fetched_null	0
    proto_text_fetched_bit	0
    proto_text_fetched_tinyint	0
    proto_text_fetched_short	0
    proto_text_fetched_int24	0
    proto_text_fetched_int	110
    proto_text_fetched_bigint	1746
    proto_text_fetched_decimal	0
    proto_text_fetched_float	0
    proto_text_fetched_double	0
    proto_text_fetched_date	0
    proto_text_fetched_year	0
    proto_text_fetched_time	0
    proto_text_fetched_datetime	311
    proto_text_fetched_timestamp	0
    proto_text_fetched_string	2903
    proto_text_fetched_blob	2426
    proto_text_fetched_enum	0
    proto_text_fetched_set	0
    proto_text_fetched_geometry	0
    proto_text_fetched_other	0
    proto_binary_fetched_null	0
    proto_binary_fetched_bit	0
    proto_binary_fetched_tinyint	0
    proto_binary_fetched_short	0
    proto_binary_fetched_int24	0
    proto_binary_fetched_int	0
    proto_binary_fetched_bigint	0
    proto_binary_fetched_decimal	0
    proto_binary_fetched_float	0
    proto_binary_fetched_double	0
    proto_binary_fetched_date	0
    proto_binary_fetched_year	0
    proto_binary_fetched_time	0
    proto_binary_fetched_datetime	0
    proto_binary_fetched_timestamp	0
    proto_binary_fetched_string	0
    proto_binary_fetched_blob	0
    proto_binary_fetched_enum	0
    proto_binary_fetched_set	0
    proto_binary_fetched_geometry	0
    proto_binary_fetched_other	0
    init_command_executed_count	0
    init_command_failed_count	0
    com_quit	4
    com_init_db	4
    com_query	133
    com_field_list	0
    com_create_db	0
    com_drop_db	0
    com_refresh	0
    com_shutdown	0
    com_statistics	0
    com_process_info	0
    com_connect	0
    com_process_kill	0
    com_debug	0
    com_ping	0
    com_time	0
    com_delayed_insert	0
    com_change_user	0
    com_binlog_dump	0
    com_table_dump	0
    com_connect_out	0
    com_register_slave	0
    com_stmt_prepare	0
    com_stmt_execute	0
    com_stmt_send_long_data	0
    com_stmt_close	0
    com_stmt_reset	0
    com_stmt_set_option	4
    com_stmt_fetch	0
    com_deamon	0
    bytes_received_real_data_normal	512459
    bytes_received_real_data_ps	0
    
    example statistics	
    stat1	0
    stat2	0
    
    odbc
    
    ODBC Support	enabled
    Active Persistent Links	0
    Active Links	0
    ODBC library	Win32
    
    Directive	Local Value	Master Value
    odbc.allow_persistent	On	On
    odbc.check_persistent	On	On
    odbc.default_cursortype	Static cursor	Static cursor
    odbc.default_db	no value	no value
    odbc.default_pw	no value	no value
    odbc.default_user	no value	no value
    odbc.defaultbinmode	return as is	return as is
    odbc.defaultlrl	return up to 4096 bytes	return up to 4096 bytes
    odbc.max_links	Unlimited	Unlimited
    odbc.max_persistent	Unlimited	Unlimited
    
    openssl
    
    OpenSSL support	enabled
    OpenSSL Library Version	OpenSSL 0.9.8y 5 Feb 2013
    OpenSSL Header Version	OpenSSL 0.9.8y 5 Feb 2013
    
    pcre
    
    PCRE (Perl Compatible Regular Expressions) Support	enabled
    PCRE Library Version	8.32 2012-11-30
    
    Directive	Local Value	Master Value
    pcre.backtrack_limit	1000000	1000000
    pcre.recursion_limit	100000	100000
    
    PDO
    
    PDO support	enabled
    PDO drivers	mysql, sqlite, sqlsrv
    
    pdo_mysql
    
    PDO Driver for MySQL	enabled
    Client API version	mysqlnd 5.0.10 - 20111026 - $Id: e707c415db32080b3752b232487a435ee0372157 $
    
    pdo_sqlite
    
    PDO Driver for SQLite 3.x	enabled
    SQLite Library	3.7.7.1
    
    pdo_sqlsrv
    
    pdo_sqlsrv support	enabled
    
    Directive	Local Value	Master Value
    pdo_sqlsrv.client_buffer_max_kb_size	10240	10240
    pdo_sqlsrv.log_severity	0	0
    
    Phar
    
    Phar: PHP Archive support	enabled
    Phar EXT version	2.0.1
    Phar API version	1.1.1
    SVN revision	$Id: c5042cc34acebcc0926625b57dff03deebbe6472 $
    Phar-based phar archives	enabled
    Tar-based phar archives	enabled
    ZIP-based phar archives	enabled
    gzip compression	enabled
    bzip2 compression	enabled
    OpenSSL support	enabled
    
    Phar based on pear/PHP_Archive, original concept by Davey Shafik.
    Phar fully realized by Gregory Beaver and Marcus Boerger.
    Portions of tar implementation Copyright (c) 2003-2009 Tim Kientzle.
    
    Directive	Local Value	Master Value
    phar.cache_list	no value	no value
    phar.readonly	On	On
    phar.require_hash	On	On
    
    Reflection
    
    Reflection	enabled
    Version	$Id: 6c4d8062369898a397e4b128348042f5c01b4427 $
    
    session
    
    Session Support	enabled
    Registered save handlers	files user
    Registered serializer handlers	php php_binary wddx
    
    Directive	Local Value	Master Value
    session.auto_start	Off	Off
    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	1000	1000
    session.gc_maxlifetime	1440	1440
    session.gc_probability	1	1
    session.hash_bits_per_character	5	5
    session.hash_function	0	0
    session.name	PHPSESSID	PHPSESSID
    session.referer_check	no value	no value
    session.save_handler	files	files
    session.save_path	C:\Windows\temp	C:\Windows\temp
    session.serialize_handler	php	php
    session.upload_progress.cleanup	On	On
    session.upload_progress.enabled	On	On
    session.upload_progress.freq	1%	1%
    session.upload_progress.min_freq	1	1
    session.upload_progress.name	PHP_SESSION_UPLOAD_PROGRESS	PHP_SESSION_UPLOAD_PROGRESS
    session.upload_progress.prefix	upload_progress_	upload_progress_
    session.use_cookies	On	On
    session.use_only_cookies	On	On
    session.use_trans_sid	0	0
    
    SimpleXML
    
    Simplexml support	enabled
    Revision	$Id: 692516840b2d7d6e7aedb0bedded1f53b764a99f $
    Schema support	enabled
    
    soap
    
    Soap Client	enabled
    Soap Server	enabled
    
    Directive	Local Value	Master Value
    soap.wsdl_cache	1	1
    soap.wsdl_cache_dir	C:\inetpub\temp	C:\inetpub\temp
    soap.wsdl_cache_enabled	1	1
    soap.wsdl_cache_limit	5	5
    soap.wsdl_cache_ttl	86400	86400
    
    sockets
    
    Sockets Support	enabled
    
    SPL
    
    SPL support	enabled
    Interfaces	Countable, OuterIterator, RecursiveIterator, SeekableIterator, SplObserver, SplSubject
    Classes	AppendIterator, ArrayIterator, ArrayObject, BadFunctionCallException, BadMethodCallException, CachingIterator, CallbackFilterIterator, DirectoryIterator, DomainException, EmptyIterator, FilesystemIterator, FilterIterator, GlobIterator, InfiniteIterator, InvalidArgumentException, IteratorIterator, LengthException, LimitIterator, LogicException, MultipleIterator, NoRewindIterator, OutOfBoundsException, OutOfRangeException, OverflowException, ParentIterator, RangeException, RecursiveArrayIterator, RecursiveCachingIterator, RecursiveCallbackFilterIterator, RecursiveDirectoryIterator, RecursiveFilterIterator, RecursiveIteratorIterator, RecursiveRegexIterator, RecursiveTreeIterator, RegexIterator, RuntimeException, SplDoublyLinkedList, SplFileInfo, SplFileObject, SplFixedArray, SplHeap, SplMinHeap, SplMaxHeap, SplObjectStorage, SplPriorityQueue, SplQueue, SplStack, SplTempFileObject, UnderflowException, UnexpectedValueException
    
    sqlsrv
    
    sqlsrv support	enabled
    
    Directive	Local Value	Master Value
    sqlsrv.ClientBufferMaxKBSize	10240	10240
    sqlsrv.LogSeverity	0	0
    sqlsrv.LogSubsystems	0	0
    sqlsrv.WarningsReturnAsErrors	On	On
    
    standard
    
    Dynamic Library Support	enabled
    Internal Sendmail Support for Windows	enabled
    
    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
    from	no value	no value
    url_rewriter.tags	a=href,area=href,frame=src,input=src,form=fakeentry	a=href,area=href,frame=src,input=src,form=fakeentry
    user_agent	no value	no value
    
    tidy
    
    Tidy support	enabled
    libTidy Release	25 March 2009
    Extension Version	2.0 ($Id$)
    
    Directive	Local Value	Master Value
    tidy.clean_output	no value	no value
    tidy.default_config	no value	no value
    
    tokenizer
    
    Tokenizer Support	enabled
    
    wddx
    
    WDDX Support	enabled
    WDDX Session Serializer	enabled
    
    xml
    
    XML Support	active
    XML Namespace Support	active
    libxml2 Version	2.7.8
    
    xmlreader
    
    XMLReader	enabled
    
    xmlrpc
    
    core library version	xmlrpc-epi v. 0.51
    php extension version	0.51
    author	Dan Libby
    homepage	http://xmlrpc-epi.sourceforge.net
    open sourced by	Epinions.com
    
    xmlwriter
    
    XMLWriter	enabled
    
    zip
    
    Zip	enabled
    Extension Version	$Id: 727cc853ca1ae15d995c3520c5719784ddc1e292 $
    Zip version	1.11.0
    Libzip version	0.10.1
    
    zlib
    
    ZLib Support	enabled
    Stream Wrapper	compress.zlib://
    Stream Filter	zlib.inflate, zlib.deflate
    Compiled Version	1.2.7
    Linked Version	1.2.7
    
    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
    PROCESSOR_ARCHITEW6432	AMD64
    _FCGI_X_PIPE_	\\.\pipe\IISFCGI-1b0b828b-33af-4fe8-a29d-6e5cda259e2f
    PHP_FCGI_MAX_REQUESTS	10000
    PHPRC	C:\Program Files (x86)\PHP\v5.4
    ALLUSERSPROFILE	C:\ProgramData
    APPDATA	C:\Windows\system32\config\systemprofile\AppData\Roaming
    APP_POOL_CONFIG	C:\inetpub\temp\apppools\DefaultAppPool\DefaultAppPool.config
    APP_POOL_ID	DefaultAppPool
    CommonProgramFiles	C:\Program Files (x86)\Common Files
    CommonProgramFiles(x86)	C:\Program Files (x86)\Common Files
    CommonProgramW6432	C:\Program Files\Common Files
    COMPUTERNAME	WEB3
    ComSpec	C:\Windows\system32\cmd.exe
    FP_NO_HOST_CHECK	NO
    LOCALAPPDATA	C:\Windows\system32\config\systemprofile\AppData\Local
    NUMBER_OF_PROCESSORS	1
    OS	Windows_NT
    Path	C:\Program Files (x86)\PHP\v5.4;C:\Windows\system32\inetsrv;C:\Program Files\PHP\v5.3;C:\Program Files (x86)\Internet Explorer;;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;;
    PATHEXT	.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
    PROCESSOR_ARCHITECTURE	x86
    PROCESSOR_IDENTIFIER	Intel64 Family 6 Model 26 Stepping 4, GenuineIntel
    PROCESSOR_LEVEL	6
    PROCESSOR_REVISION	1a04
    ProgramData	C:\ProgramData
    ProgramFiles	C:\Program Files (x86)
    ProgramFiles(x86)	C:\Program Files (x86)
    ProgramW6432	C:\Program Files
    PSModulePath	C:\Windows\system32\WindowsPowerShell\v1.0\Modules\
    PUBLIC	C:\Users\Public
    SystemDrive	C:
    SystemRoot	C:\Windows
    TEMP	C:\Windows\TEMP
    TMP	C:\Windows\TEMP
    USERDOMAIN	<removed>
    USERNAME	WEB3$
    USERPROFILE	C:\Windows\system32\config\systemprofile
    windir	C:\Windows
    windows_tracing_flags	3
    windows_tracing_logfile	C:\BVTBin\Tests\installpackage\csilogfile.log
    
    PHP Variables
    
    Variable	Value
    _SERVER["PROCESSOR_ARCHITEW6432"]	AMD64
    _SERVER["_FCGI_X_PIPE_"]	\\.\pipe\IISFCGI-1b0b828b-33af-4fe8-a29d-6e5cda259e2f
    _SERVER["PHP_FCGI_MAX_REQUESTS"]	10000
    _SERVER["PHPRC"]	C:\Program Files (x86)\PHP\v5.4
    _SERVER["ALLUSERSPROFILE"]	C:\ProgramData
    _SERVER["APPDATA"]	C:\Windows\system32\config\systemprofile\AppData\Roaming
    _SERVER["APP_POOL_CONFIG"]	C:\inetpub\temp\apppools\DefaultAppPool\DefaultAppPool.config
    _SERVER["APP_POOL_ID"]	DefaultAppPool
    _SERVER["CommonProgramFiles"]	C:\Program Files (x86)\Common Files
    _SERVER["CommonProgramFiles(x86)"]	C:\Program Files (x86)\Common Files
    _SERVER["CommonProgramW6432"]	C:\Program Files\Common Files
    _SERVER["COMPUTERNAME"]	WEB3
    _SERVER["ComSpec"]	C:\Windows\system32\cmd.exe
    _SERVER["FP_NO_HOST_CHECK"]	NO
    _SERVER["LOCALAPPDATA"]	C:\Windows\system32\config\systemprofile\AppData\Local
    _SERVER["NUMBER_OF_PROCESSORS"]	1
    _SERVER["OS"]	Windows_NT
    _SERVER["Path"]	C:\Program Files (x86)\PHP\v5.4;C:\Windows\system32\inetsrv;C:\Program Files\PHP\v5.3;C:\Program Files (x86)\Internet Explorer;;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;;
    _SERVER["PATHEXT"]	.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
    _SERVER["PROCESSOR_ARCHITECTURE"]	x86
    _SERVER["PROCESSOR_IDENTIFIER"]	Intel64 Family 6 Model 26 Stepping 4, GenuineIntel
    _SERVER["PROCESSOR_LEVEL"]	6
    _SERVER["PROCESSOR_REVISION"]	1a04
    _SERVER["ProgramData"]	C:\ProgramData
    _SERVER["ProgramFiles"]	C:\Program Files (x86)
    _SERVER["ProgramFiles(x86)"]	C:\Program Files (x86)
    _SERVER["ProgramW6432"]	C:\Program Files
    _SERVER["PSModulePath"]	C:\Windows\system32\WindowsPowerShell\v1.0\Modules\
    _SERVER["PUBLIC"]	C:\Users\Public
    _SERVER["SystemDrive"]	C:
    _SERVER["SystemRoot"]	C:\Windows
    _SERVER["TEMP"]	C:\Windows\TEMP
    _SERVER["TMP"]	C:\Windows\TEMP
    _SERVER["USERDOMAIN"]	<removed>
    _SERVER["USERNAME"]	WEB3$
    _SERVER["USERPROFILE"]	C:\Windows\system32\config\systemprofile
    _SERVER["windir"]	C:\Windows
    _SERVER["windows_tracing_flags"]	3
    _SERVER["windows_tracing_logfile"]	C:\BVTBin\Tests\installpackage\csilogfile.log
    _SERVER["ORIG_PATH_INFO"]	/sso/info.php
    _SERVER["URL"]	/sso/info.php
    _SERVER["SERVER_SOFTWARE"]	Microsoft-IIS/7.5
    _SERVER["SERVER_PROTOCOL"]	HTTP/1.1
    _SERVER["SERVER_PORT_SECURE"]	0
    _SERVER["SERVER_PORT"]	80
    _SERVER["SERVER_NAME"]	<removed>
    _SERVER["SCRIPT_NAME"]	/sso/info.php
    _SERVER["SCRIPT_FILENAME"]	<removed>\sso\info.php
    _SERVER["REQUEST_URI"]	/sso/info.php
    _SERVER["REQUEST_METHOD"]	GET
    _SERVER["REMOTE_USER"]	no value
    _SERVER["REMOTE_PORT"]	61723
    _SERVER["REMOTE_HOST"]	192.168.2.109
    _SERVER["REMOTE_ADDR"]	192.168.2.109
    _SERVER["QUERY_STRING"]	no value
    _SERVER["PATH_TRANSLATED"]	<removed>\sso\info.php
    _SERVER["LOGON_USER"]	no value
    _SERVER["LOCAL_ADDR"]	192.168.2.109
    _SERVER["INSTANCE_META_PATH"]	/LM/W3SVC/1
    _SERVER["INSTANCE_NAME"]	DEFAULT WEB SITE
    _SERVER["INSTANCE_ID"]	1
    _SERVER["HTTPS_SERVER_SUBJECT"]	no value
    _SERVER["HTTPS_SERVER_ISSUER"]	no value
    _SERVER["HTTPS_SECRETKEYSIZE"]	no value
    _SERVER["HTTPS_KEYSIZE"]	no value
    _SERVER["HTTPS"]	off
    _SERVER["GATEWAY_INTERFACE"]	CGI/1.1
    _SERVER["DOCUMENT_ROOT"]	<removed>
    _SERVER["CONTENT_TYPE"]	no value
    _SERVER["CONTENT_LENGTH"]	0
    _SERVER["CERT_SUBJECT"]	no value
    _SERVER["CERT_SERIALNUMBER"]	no value
    _SERVER["CERT_ISSUER"]	no value
    _SERVER["CERT_FLAGS"]	no value
    _SERVER["CERT_COOKIE"]	no value
    _SERVER["AUTH_USER"]	no value
    _SERVER["AUTH_PASSWORD"]	no value
    _SERVER["AUTH_TYPE"]	no value
    _SERVER["APPL_PHYSICAL_PATH"]	<removed>
    _SERVER["APPL_MD_PATH"]	/LM/W3SVC/1/ROOT
    _SERVER["IIS_UrlRewriteModule"]	7.1.0761.0
    _SERVER["HTTP_USER_AGENT"]	Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36
    _SERVER["HTTP_HOST"]	<removed>
    _SERVER["HTTP_ACCEPT_LANGUAGE"]	en-US,en;q=0.8
    _SERVER["HTTP_ACCEPT_ENCODING"]	gzip,deflate,sdch
    _SERVER["HTTP_ACCEPT"]	text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
    _SERVER["HTTP_CONNECTION"]	keep-alive
    _SERVER["FCGI_ROLE"]	RESPONDER
    _SERVER["PHP_SELF"]	/sso/info.php
    _SERVER["REQUEST_TIME_FLOAT"]	1384983739.4261
    _SERVER["REQUEST_TIME"]	1384983739
    
    PHP License
    
    This program is free software; you can redistribute it and/or modify it under the terms of the PHP License as published by the PHP Group and included in the distribution in the file: LICENSE
    
    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    
    If you did not receive a copy of the PHP license, or have any questions about PHP licensing, please contact license@php.net.
    
    



    curl json iis fastcgi php

  • Re: Same PHP code works on a AWS LAMP stack but not on my W(IIS)MP.

    Nov 22, 2013 04:12 AM|Vogues|LINK

    Hi,

    This doctrine doc http://docs.doctrine-project.org/en/latest/reference/unitofwork-associations.html says:

    Doctrine will only check the owning side of an association for changes.

    To fully understand this, remember how bidirectional associations are maintained in the object world. There are 2 references on each side of the association and these 2 references both represent the same association but can change independently of one another. Of course, in a correct application the semantics of the bidirectional association are properly maintained by the application developer (that’s his responsibility). Doctrine needs to know which of these two in-memory references is the one that should be persisted and which not. This is what the owning/inverse concept is mainly used for.

    Changes made only to the inverse side of an association are ignored. Make sure to update both sides of a bidirectional association (or at least the owning side, from Doctrine’s point of view)

    The owning side of a bidirectional association is the side Doctrine “looks at” when determining the state of the association, and consequently whether there is anything to do to update the association in the database

    So, I think maybe your code have some wrong, I suggest you to post some of your code here.

    Regards.

  • Re: Same PHP code works on a AWS LAMP stack but not on my W(IIS)MP.

    Nov 24, 2013 07:09 PM|tserva|LINK

    @Vogues. I am willing to consider that it might be the php code. But I was hoping for some tips about how best troubleshoot the PHP  and Apache configurations.

    Also, an update to my problem: I created a true WAMP server to eliminate the IIS component (FWIW). Opened the firewall to this server and the PHP does not work. It is the same PHP code that does work AS IS on a AWS distro of Linux on the Amazon cloud. I am not getting any errors in my apache logs except for the php errors.

    here is the code:

    <?php
    require_once("SingleSignOnS.php");
    
    try
    {
    	$firstName = $_GET['fn'];
    	$lastName = $_GET['ln'];
    	$uid = $_GET['uid'];
    	$email = $_GET['email'];
    	
    	$ssoResponse = SingleSignOn::initSingleSignOn($firstName, $lastName, $email, $uid);
    	$url = SSOUtils::generateURL($ssoResponse, "/my/loops");
    }
    catch(SSOException $e)
    {
    	print_r($e);
    	die("Exception");
    }
    
    ?>
    <?php echo ("<!DOCTYPE html><html><head></head><body><a href='".$url."'>Go To **The site**</a></body></html>");?>

    And then this code: SingleSignOnS.php

    <?php
    define("MYSITE_SYSTEM_ID", "NN");
    define("MYSITE_SERVER_URL", "stage-www.thesite.com");
    define("MYSITE_SSO_REQUEST_URL", "/my/rest/apps/sso/NN");
    define("MYSITE_SSO_KEY01", "myKey1");
    define("MYSITE_SSO_IV01", "myIV01");
    define("MYSITE_SSO_KEY02", "myKey2");
    define("MYSITE_SSO_IV02", "myIV02"); 
    
    define("MYSITE_SSO_USE_SSL", "true");
    
    // ===================================================================================
    // == EXCEPTIONS =====================================================================
    // ===================================================================================
    
    class SSOException extends Exception
    {}
    
    class SSOInitializationException extends SSOException
    {}
    
    class SSOEncryptionException extends SSOException
    {}
    
    class SSOHttpConnectionException extends SSOException
    {}
    
    class SSOInvalidResponseException extends SSOException
    {}
    
    class SSOSslUntrustedException extends SSOException
    {}
    
    // ===================================================================================
    // == SSOUtils =======================================================================
    // ===================================================================================
    
    class SSOUtils
    {
    	private static function pkcs5_pad ($text, $blocksize)
    	{
    		$pad = $blocksize - (strlen($text) % $blocksize);
    		return $text . str_repeat(chr($pad), $pad);
    	}
    
    	private static function pkcs5_unpad($text)
    	{
    		$pad = ord($text{strlen($text)-1});
    		if ($pad > strlen($text)) return false;
    		if (strspn($text, chr($pad), strlen($text) - $pad) != $pad) return false;
    		return substr($text, 0, -1 * $pad);
    	}
    	
    	public static function generateURL($ssoResponse, $relativeUrl)
    	{
    		$prepend = "http://";
    		if(MYSITE_SSO_USE_SSL)
    		{
    			$prepend = "https://";
    		}
    		
    		return $prepend . MYSITE_SERVER_URL . $relativeUrl . "?m=sso&systemId=" . MYSITE_SYSTEM_ID . "&uid=" . $ssoResponse->getUid() . "&key=" . $ssoResponse->getKey();
    		print $prepend;
    	}
    
    	public static function encryptKey($data, $key, $iv)
    	{	
    		$iv = pack('H*', $iv);
    		//$data = pack('H*', $data);
    		$key= pack('H*', $key);
    		
    		$cipher = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, '');
    		
    		$size = mcrypt_get_block_size('rijndael-128', 'cbc');
    		$data = self::pkcs5_pad($data, $size);
    
    		if (mcrypt_generic_init($cipher, $key, $iv) != -1)
    		{
    			$encryptedKey = mcrypt_generic($cipher, $data);
    			
    			mcrypt_generic_deinit($cipher);
                mcrypt_module_close($cipher);
    		}
    		
    		return bin2hex($encryptedKey);
    	}
    
    	public static function decryptKey($data, $key, $iv)
    	{
    		$iv = pack('H*', $iv);
    		$data = pack('H*', $data);
    		$key= pack('H*', $key);
    		
    		$cipher = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, '');
    		
    		$size = mcrypt_get_block_size('rijndael-128', 'cbc');
    
    		if (mcrypt_generic_init($cipher, $key, $iv) != -1)
    		{
    			$decryptedKey = mdecrypt_generic($cipher, $data);
    		}
    
    		return self::pkcs5_unpad($decryptedKey);
    	}
    }
    
    // ===================================================================================
    // == MYSITEHttpClient ==============================================================
    // ===================================================================================
    
    class MYSITEHttpClient
    {
    	private $useSSL = false;
    	private $serverUrl = "www.MYSITE.com";
    	
    	private $connection = null;
    	
    	public function __construct($serverUrl, $useSSL)
    	{
    		$this->serverUrl = $serverUrl;
    		$this->useSSL = $useSSL;
    	}
    	
    	public function connect($url, $parameterArray)
    	{
    
    		if ($this->connection == null)
    		{
    			$parameterString = "";
    
    			if ($parameterArray != null)
    			{
    				$first = true;
    				foreach($parameterArray AS $key=>$value)
    				{
    					if (!$first) { $parameterString .= "&"; }
    					$parameterString .= "$key=$value";
    					$first = false;
    				}
    			}
    			
    			$prepend = "";
    			
    			$port = 80;
                
                if ($this->useSSL)
    			{
    				$prepend .= "https://";				
    			}
                else{
                    $prepend .= "http://";
                }
    
                $serverUrl = $prepend . $this->serverUrl;
    
                $ch = curl_init();
                curl_setopt($ch, CURLOPT_URL,$serverUrl.$url."?".$parameterString);
                curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
                curl_setopt($ch, CURLOPT_USERAGENT, 'PHP/' . phpversion());
                curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
                curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:application/json'));
    
                $return = curl_exec($ch);
                curl_close($ch);
                // print "return:".$return;
                /*
    			//parse through and find first (double) line break
    			$lines = explode("\n", $return);
                
    			$foundBreak = false;
    			$resultString = "";
    			foreach($lines AS $thisLine)
    			{
    				if ($foundBreak)
    				{
    					$resultString .= $thisLine;
    				}
    				if ($thisLine == "\r")
    				{
    					$foundBreak = true;
    				}
    			}
                return $resultString;
    			*/
                return $return;
    			
    		}
    	}
    }
    
    // ===================================================================================
    // == SSOResponse ====================================================================
    // ===================================================================================
    
    class SSOResponse
    {
    	private $systemId;
    	private $firstName;
    	private $lastName;
    	private $emailAddress;
    	private $uid;
    	private $ipAddress;
    	private $requestId;
    	private $key;
    	
    	public function __construct($jsonObject)
    	{
    		$this->systemId = $jsonObject->{'systemId'};
    		$this->firstName = $jsonObject->{'firstName'};
    		$this->lastName = $jsonObject->{'lastName'};
    		$this->emailAddress = $jsonObject->{'emailAddress'};
    		$this->uid = $jsonObject->{'uid'};
    		$this->ipAddress = $jsonObject->{'ipAddress'};
    		$this->requestId = $jsonObject->{'requestId'};
    		$this->key = $jsonObject->{'key'};
    	}
    	
    	public function getSystemId() {
    		return $this->systemId;
    	}
    	
    	public function getFirstName() {
    		return $this->firstName;
    	}
    	
    	public function getLastName() {
    		return $this->lastName;
    	}
    	
    	public function getEmailAddress() {
    		return $this->emailAddress;
    	}
    	
    	public function getUid() {
    		return $this->uid;
    	}
    	
    	public function getIpAddress() {
    		return $this->ipAddress;
    	}
    	
    	public function getRequestId() {
    		return $this->requestId;
    	}
    	
    	public function getKey() {
    		return $this->key;
    	}
    	
    	public function setKey($set) {
    		$this->key = $set;
    	}
    }
    
    // ===================================================================================
    // == SingleSignOn ===================================================================
    // ===================================================================================
    
    class SingleSignOn
    {
    	public static function checkParams()
    	{
    		$allOk = true;
    		
    		if (!defined("MYSITE_SYSTEM_ID"))
    		{
    			$allOk = false;
    		}
    		if (!defined("MYSITE_SERVER_URL"))
    		{
    			$allOk = false;
    		}
    		if (!defined("MYSITE_SSO_REQUEST_URL"))
    		{
    			$allOk = false;
    		}
    		if (!defined("MYSITE_SSO_KEY01"))
    		{
    			$allOk = false;
    		}
    		if (!defined("MYSITE_SSO_IV01"))
    		{
    			$allOk = false;
    		}
    		if (!defined("MYSITE_SSO_KEY02"))
    		{
    			$allOk = false;
    		}
    		if (!defined("MYSITE_SSO_IV02"))
    		{
    			$allOk = false;
    		}
    		if (!defined("MYSITE_SSO_USE_SSL"))
    		{
    			define("MYSITE_SSO_USE_SSL", "true");
    		}
    		else if (strtolower(MYSITE_SSO_USE_SSL) != "false" && strtolower(MYSITE_SSO_USE_SSL) != "true")
    		{
    			define("MYSITE_SSO_USE_SSL", "true");
    		}
    		
    		if (!$allOk)
    		{
    			throw new SSOInitializationException();
    		}
    	}
    	
    	public static function initSingleSignOn($firstName, $lastName, $emailAddress, $uid)
    	{
    		self::checkParams();		
    		$key01 = MYSITE_SSO_KEY01;
    		$iv01 = MYSITE_SSO_IV01;
    		$key02 = MYSITE_SSO_KEY02;
    		$iv02 = MYSITE_SSO_IV02;
    		
    		$ssoResponse = null;
    		
    		$key = rand(10000000000,99999999999);
    		//$key=1001;
    
    		$encryptedKey = SSOUtils::encryptKey($key, $key01, $iv01);
    		
    		//$encryptedKey = ebad8ae5028120dcdd78935f3c16d4d1;
    		$decryptedKey = SSOUtils::decryptKey($encryptedKey, $key01, $iv01);
    
    		$httpClient = new MYSITEHttpClient(MYSITE_SERVER_URL, MYSITE_SSO_USE_SSL);
    
    		$firstName=urlencode($firstName);
    		$firstName=json_encode("$firstName");
    		$firstName=trim($firstName, "\"");
    		
    		$lastName=urlencode($lastName);
    		$lastName=json_encode("$lastName");
    		$lastName=trim($lastName, "\"");
    		
    		$emailAddress=urlencode($emailAddress);
    		$emailAddress=json_encode("$emailAddress");
    		$emailAddress=trim($emailAddress, "\"");
    		
    		$uid=urlencode($uid);
    		$uid=json_encode("$uid");
    		$uid=trim($uid, "\"");
    		
    		$parms = Array();
    		$parms['firstName'] = $firstName;
    		$parms['lastName'] = $lastName;
    		$parms['emailAddress'] = $emailAddress;
    		$parms['uid'] = $uid;
    		$parms['key'] = $encryptedKey;
    		
    		$result = $httpClient->connect(MYSITE_SSO_REQUEST_URL, $parms);
    
    		if ($result != null)
    		{
    			$jsonObject = json_decode($result);
    			
    			if ($jsonObject != null && $jsonObject->{'jsonStatus'} == "success")
    			{
    				$ssoResponse = new SSOResponse($jsonObject->{'response'});
    				
    				if ($ssoResponse != null)
    				{
    					$keyReturned = $ssoResponse->getKey();					
                        $ssoResponse->setKey(null);
    					
    					//Decode the key returned
    					$decryptedKeyReturned = SSOUtils::decryptKey($keyReturned, $key02, $iv02);
    					
    					//Split by the "-"
    					$parts = explode("-", $decryptedKeyReturned);
    					
    					if (is_array($parts) && sizeof($parts) == 2)
    					{
    						$keyToMatch = $parts[0];
    						//If the key returned matches the key sent
    						if ($keyToMatch == $key)
    						{
    							//encrypt the second key
    							$keyToEncrypt = $parts[1];
    							
    							$ssoResponse->setKey(SSOUtils::encryptKey($keyToEncrypt, $key02, $iv02));
    						}
    					}
    				}
    			}
    			else
    			{
    				$message = "No JSON returned in request";
    				
    				if ($jsonObject != null)
    				{
    					throw new SSOException($jsonObject->{'message'});
    				}
    				
    				throw new SSOInvalidResponseException;
    			}
    		}
    		
    		return $ssoResponse;
    	}
    }
    ?>




  • Re: Same PHP code works on a AWS LAMP stack but not on my W(IIS)MP.

    Nov 24, 2013 07:14 PM|tserva|LINK

    I am not using Doctrin libraries, BTW.