Re: [PHP-DEV] Do You think PHP's SOAP client should have an option to virtuallyAdd (for XSD imports!) missing end-slash in the URI to WSDL? I do!

2016-09-20 Thread David Zuelke
I think it should not. Your pull request fixes a problem in that WSDL.

The WSDL is located at the URL 
`https://pg.eet.cz/eet/services/EETServiceSOAP/v3?wsdl`.

It references an XML Schema file at `EETXMLSchema.xsd`, which is a relative 
location, so it's looked for relative to the containing document, at 
`https://pg.eet.cz/eet/services/EETServiceSOAP/EETXMLSchema.xsd`.

The correct location is 
`https://pg.eet.cz/eet/services/EETServiceSOAP/v3/EETXMLSchema.xsd`, but that's 
not PHP's problem. You should contact the owner of the service and ask them to 
fix the issue. Not only PHP, but all other clients that adhere to the spec will 
be unable to load this file, so it's in their interest to get it resolved.

Failing that, you can

1. use an XML catalog entry on your local system to re-define where 
`EETXMLSchema.xsd` is located;
2. load the WSDL file from the origin URL, cache it locally, and rewrite the 
`schemaLocation` to contain a full relative path 
(`/eet/services/EETServiceSOAP/v3/EETXMLSchema.xsd`) or even an absolute URL. 
Then load that local WSDL.

You really want to do option 2 in production anyway, because otherwise, your 
SoapClient instantiation will fetch the remote WSDL file on each instantiation, 
which slows down your app, and may break things even if you don't make a SOAP 
call if the endpoint is down.

If you want to discuss this further, then the PR on GitHub is the right spot 
for discussing this.


> On 20.09.2016, at 10:02, Filip Rydlo  wrote:
> 
> Hello to all PHP developers!
> 
>  If You are interested how we could improve SOAPClient a bit,
> please, see my last comment here to understand my *WHYs*. :-)
> 
> 
> *https://github.com/php/php-src/pull/2121
> *
> 
> 
>  This pull request is in no way complete. It is just a small start to
> let us *track down* the exact code-path *where the problem occurs.*
> 
>  Sadly, the example scenario (HOW to reproduce) contains a *webservice*
> which *only works* from *PCs / I.P.s*  *located  in Czech Republic,
> EU.*Hopefully,
> some of You also live there... or possibly You have some testing virtual
> webserver located there. :)
> 
> 
>  *I would be happy to test the new feature!*   But I am still unable
> to compile PHP5 from the sources on Debian 8.5 x64  because of some module
> called *opcache :-(*
> 
> 
> 
> 
>   Here is the error I am getting. I am sure it is a well known error
> for You ... and You certainly know the solution. Unfortunatelly,  I am not
> so good in linux development,  yet.
> Maybe You could tell me how to overcome / workaround this problem,
> please?.That would be GREAT !  :-)
> I already tried all the classical solutions I could *google-out¨ *and
> installing all the dependencies did not solve *this*.
> 
> Thank You so much.
> 
> Filip The Overtonesinger
> 
> 
>  ERROR compiling php *5.6.24* sources:
> --
> 
> /bin/bash /home/bob/A_php5/php-src/libtool --silent --preserve-dup-deps
> --mode=link cc -DPHP_ATOM_INC -I/home/bob/A_php5/php-src/include
> -I/home/bob/A_php5/php-src/main -I/home/bob/A_php5/php-src
> -I/home/bob/A_php5/php-src/ext/date/lib -I/usr/include/libxml2
> -I/home/bob/A_php5/php-src/ext/sqlite3/libsqlite
> -I/home/bob/A_php5/php-src/TSRM -I/home/bob/A_php5/php-src/Zend
> -I/usr/include -g -O2 -fvisibility=hidden -DZEND_SIGNALS-o ext/opcache/
> opcache.la -export-dynamic -avoid-version -prefer-pic -module -rpath
> /home/bob/A_php5/php-src/modules  ext/opcache/ZendAccelerator.lo
> ext/opcache/zend_accelerator_blacklist.lo
> ext/opcache/zend_accelerator_debug.lo ext/opcache/zend_accelerator_hash.lo
> ext/opcache/zend_accelerator_module.lo ext/opcache/zend_persist.lo
> ext/opcache/zend_persist_calc.lo ext/opcache/zend_file_cache.lo
> ext/opcache/zend_shared_alloc.lo ext/opcache/zend_accelerator_util_funcs.lo
> ext/opcache/shared_alloc_shm.lo ext/opcache/shared_alloc_mmap.lo
> ext/opcache/shared_alloc_posix.lo ext/opcache/Optimizer/zend_optimizer.lo
> ext/opcache/Optimizer/pass1_5.lo ext/opcache/Optimizer/pass2.lo
> ext/opcache/Optimizer/pass3.lo ext/opcache/Optimizer/optimize_func_calls.lo
> ext/opcache/Optimizer/block_pass.lo
> ext/opcache/Optimizer/optimize_temp_vars_5.lo
> ext/opcache/Optimizer/nop_removal.lo
> ext/opcache/Optimizer/compact_literals.lo ext/opcache/Optimizer/zend_cfg.lo
> ext/opcache/Optimizer/zend_dfg.lo ext/opcache/Optimizer/dfa_pass.lo
> ext/opcache/Optimizer/zend_ssa.lo ext/opcache/Optimizer/zend_inference.lo
> ext/opcache/Optimizer/zend_func_info.lo
> ext/opcache/Optimizer/zend_call_graph.lo ext/opcache/Optimizer/zend_dump.lo
> Reloading web server: apache2 failed!
> Apache2 is not running ... (warning).
> Makefile:870: recipe for target 'ext/opcache/opcache.la' failed
> make: *** [ext/opcache/opcache.la] Error 1


--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: 

[PHP-DEV] Do You think PHP's SOAP client should have an option to virtuallyAdd (for XSD imports!) missing end-slash in the URI to WSDL? I do!

2016-09-20 Thread Filip Rydlo
Hello to all PHP developers!

  If You are interested how we could improve SOAPClient a bit,
please, see my last comment here to understand my *WHYs*. :-)


*https://github.com/php/php-src/pull/2121
*


  This pull request is in no way complete. It is just a small start to
let us *track down* the exact code-path *where the problem occurs.*

  Sadly, the example scenario (HOW to reproduce) contains a *webservice*
which *only works* from *PCs / I.P.s*  *located  in Czech Republic,
EU.*Hopefully,
some of You also live there... or possibly You have some testing virtual
webserver located there. :)


  *I would be happy to test the new feature!*   But I am still unable
to compile PHP5 from the sources on Debian 8.5 x64  because of some module
called *opcache :-(*




   Here is the error I am getting. I am sure it is a well known error
for You ... and You certainly know the solution. Unfortunatelly,  I am not
so good in linux development,  yet.
Maybe You could tell me how to overcome / workaround this problem,
please?.That would be GREAT !  :-)
I already tried all the classical solutions I could *google-out¨ *and
installing all the dependencies did not solve *this*.

Thank You so much.

Filip The Overtonesinger


 ERROR compiling php *5.6.24* sources:
--

/bin/bash /home/bob/A_php5/php-src/libtool --silent --preserve-dup-deps
--mode=link cc -DPHP_ATOM_INC -I/home/bob/A_php5/php-src/include
-I/home/bob/A_php5/php-src/main -I/home/bob/A_php5/php-src
-I/home/bob/A_php5/php-src/ext/date/lib -I/usr/include/libxml2
-I/home/bob/A_php5/php-src/ext/sqlite3/libsqlite
-I/home/bob/A_php5/php-src/TSRM -I/home/bob/A_php5/php-src/Zend
 -I/usr/include -g -O2 -fvisibility=hidden -DZEND_SIGNALS-o ext/opcache/
opcache.la -export-dynamic -avoid-version -prefer-pic -module -rpath
/home/bob/A_php5/php-src/modules  ext/opcache/ZendAccelerator.lo
ext/opcache/zend_accelerator_blacklist.lo
ext/opcache/zend_accelerator_debug.lo ext/opcache/zend_accelerator_hash.lo
ext/opcache/zend_accelerator_module.lo ext/opcache/zend_persist.lo
ext/opcache/zend_persist_calc.lo ext/opcache/zend_file_cache.lo
ext/opcache/zend_shared_alloc.lo ext/opcache/zend_accelerator_util_funcs.lo
ext/opcache/shared_alloc_shm.lo ext/opcache/shared_alloc_mmap.lo
ext/opcache/shared_alloc_posix.lo ext/opcache/Optimizer/zend_optimizer.lo
ext/opcache/Optimizer/pass1_5.lo ext/opcache/Optimizer/pass2.lo
ext/opcache/Optimizer/pass3.lo ext/opcache/Optimizer/optimize_func_calls.lo
ext/opcache/Optimizer/block_pass.lo
ext/opcache/Optimizer/optimize_temp_vars_5.lo
ext/opcache/Optimizer/nop_removal.lo
ext/opcache/Optimizer/compact_literals.lo ext/opcache/Optimizer/zend_cfg.lo
ext/opcache/Optimizer/zend_dfg.lo ext/opcache/Optimizer/dfa_pass.lo
ext/opcache/Optimizer/zend_ssa.lo ext/opcache/Optimizer/zend_inference.lo
ext/opcache/Optimizer/zend_func_info.lo
ext/opcache/Optimizer/zend_call_graph.lo ext/opcache/Optimizer/zend_dump.lo
Reloading web server: apache2 failed!
Apache2 is not running ... (warning).
Makefile:870: recipe for target 'ext/opcache/opcache.la' failed
make: *** [ext/opcache/opcache.la] Error 1