[Solved] ispconfig3_roundcube + soap error: looks like we got no xml document

Discussion in 'Installation/Configuration' started by lollollollol, Feb 8, 2015.

  1. lollollollol

    lollollollol Member

    Hello,
    ISPConfig version is 3.0.5.4p5
    [INFO] php (cli) version is 5.6.5-1
    Debian version: Linux xxx 3.10.23-xxxx-std-ipv6-64 #1 SMP Tue Mar 18 14:48:24 CET 2014 x86_64 GNU/Linux
    Roundcube Webmail 1.0.5 (Up to date)
    ispconfig3_roundcube (Up to date)

    remote user created, all Functions activated (for testing purpose & to be sure it's not an access right problem))

    Remote API Allowed:
    # grep api /usr/local/ispconfig/security/security_settings.ini
    remote_api_allowed=yes

    # cat /var/www/xxx/web/plugins/ispconfig3_account/config/config.inc.php
    <?php
    $rcmail_config['identity_limit'] = false;
    $rcmail_config['remote_soap_user'] = 'remote';
    $rcmail_config['remote_soap_pass'] = 'xxxxxxx';
    $rcmail_config['soap_url'] = 'https://xxxx:yyy/remote/';
    ?>
    (port is not 443)

    I first had a problem with remote https access. Problem solved by installing a SSL certificate Valid (not self signed).
    Now this XML error. I searched the forum and Internet abour this error without success

    I tried this: https://www.howtoforge.com/community/threads/soap-error-looks-like-we-got-no-xml-document.62307/
    Without success (it's not for my Ispconfig version)

    I found nothing usefull in Apache2 or roundcube logs...
    I am out of ideas (except downgrade roundcube to 1.0.4, but I don't tried yet) so I asked for help today.

    Thank you in advance for your help.
    Laurent.
     

    Attached Files:

  2. till

    till Super Moderator Staff Member ISPConfig Developer

  3. lollollollol

    lollollollol Member

    Hello Till,
    Thank you for your answer.

    "Unfortunately" it works very well: Blank page without error. The remote connexion is good.

    I'm trying to debug the soap answer in inserting the code bellow in the php files:
    'wsdl_cache' => 0,
    'trace' => 1

    and
    echo $client->__getLastResponse();

    But I'm not able to use it corectly... /-)
     
  4. lollollollol

    lollollollol Member

    Hello,
    I walk a little on the debug...
    In file ispconfig3_account.php
    Error is showed by line 179, so I replace it with something more usefull for me:

    // $this->rcmail_inst->output->command('display_message', 'Soap Error: ' . $e->getMessage(), 'error')
    $ses_er = print_r($this->rcmail_inst->config->get('remote_soap_user'), true);
    $this->rcmail_inst->output->command('display_message', 'Soap Error: ligne 179 ' . $e->getMessage() . " - " . $ses_er, 'error');

    I get now (of course...): Soap Error: ligne 179 looks like we got no XML document - remote

    I'm trting now to play with function init() - Line 9 to 20
    With this:
    function init()
    // {
    // $this->rcmail_inst = rcmail::get_instance();
    // $this->load_config();
    // $this->add_texts('localization/', true);
    // $this->soap = new SoapClient(null, array('location' => $this->rcmail_inst->config->get('soap_url') . 'index.php',
    // 'uri' => $this->rcmail_inst->config->get('soap_url')));
    // $this->register_action('plugin.ispconfig3_account', array($this, 'init_html'));
    // $this->register_action('plugin.ispconfig3_account.show', array($this, 'init_html'));
    // $this->add_hook('template_object_identityform', array($this, 'template_object_identityform'));
    // $this->include_script('account.js');
    // }
    {
    $this->rcmail_inst = rcmail::get_instance();
    $this->load_config();
    $this->add_texts('localization/', true);
    $this->soap = new SoapClient(null, array('location' => $this->rcmail_inst->config->get('soap_url') . 'index.php',
    'uri' => $this->rcmail_inst->config->get('soap_url'),
    'proxy_host' => 'xxxxxxxxx.xxx',
    'proxy_port' => yyyyy

    ));
    $this->register_action('plugin.ispconfig3_account', array($this, 'init_html'));
    $this->register_action('plugin.ispconfig3_account.show', array($this, 'init_html'));
    $this->add_hook('template_object_identityform', array($this, 'template_object_identityform'));
    $this->include_script('account.js');
    }

    I get
    Soap Error: ligne 179 Could not connect to host - remote

    I do not despair of understanding what's going on ...
    If anyone sees a better way to debug, he does not hesitate to let me know!
    If I can find the problem, I would not fail to share the way I get around.

    Laurent.
     
  5. lollollollol

    lollollollol Member

    Hello,
    I have not given up (although I've left a little while)!

    I created an Apache2 session for ISPConfig listening on 127.0.0.1:8080 without ssl to avoid potential problems with https.

    I still have the same problem, and something "funny" ... I have exactly the same problem with another module (Ispconfig for Whmcs): https: //github.com/cwispy/ispcfg3

    Module Command Error
    SOAP Error: Looks like we got no XML document

    This could be a problem with ISPConfig since the same error is reproduced with two different modules.

    Interesting information: I have no error with the tab change password ISPConfig module for Roundcube.
     
  6. till

    till Super Moderator Staff Member ISPConfig Developer

    I've updated a server of a customer yesterday which uses roundcube as well, I updated to ispconfig 3.0.5.4p5 with roundcube 1.1.0 and the latest roundcube ispcofig plugin and the setup works there, so generaly it should work
     
  7. lollollollol

    lollollollol Member

    Strange and annoying problem ... I do not think it's a problem with the version of Roundcube or even with the modules.

    Apache or php perhaps?
    I continue to look for a way to get a workaround.

    Thank you Till for bother to answer me.
     
  8. till

    till Super Moderator Staff Member ISPConfig Developer

    Do you use software like moD-security that might block the request?

    You can try to define a error.log in the apache ispconfig.vhost and then check that error.log for php or other apache errors.
     
  9. lollollollol

    lollollollol Member

    Nope, no mod-security nor mod-security2 installed.
    I found this lines in apache error logs:

    When SOAP is called from roundcube:

    [Wed Feb 25 11:51:36.739572 2015] [fcgid:warn] [pid 31051] [client 2001:41d0:c:58b::1:48087] mod_fcgid: stderr: PHP Deprecated: Automatically populating $HTTP_RAW_POST_DATA is deprecated and will be removed in a future version. To avoid this warning set 'always_populate_raw_post_data' to '-1' in php.ini and use the php://input stream instead. in Unknown on line 0
    [Wed Feb 25 11:51:36.739610 2015] [fcgid:warn] [pid 31051] [client 2001:41d0:c:58b::1:48087] mod_fcgid: stderr: PHP Warning: Cannot modify header information - headers already sent in /usr/local/ispconfig/interface/lib/config.inc.php on line 33
    [Wed Feb 25 11:51:36.739617 2015] [fcgid:warn] [pid 31051] [client 2001:41d0:c:58b::1:48087] mod_fcgid: stderr: PHP Warning: Cannot modify header information - headers already sent in /usr/local/ispconfig/interface/lib/config.inc.php on line 34
    [Wed Feb 25 11:51:36.739624 2015] [fcgid:warn] [pid 31051] [client 2001:41d0:c:58b::1:48087] mod_fcgid: stderr: PHP Warning: Cannot modify header information - headers already sent in /usr/local/ispconfig/interface/lib/config.inc.php on line 35
    [Wed Feb 25 11:51:36.739630 2015] [fcgid:warn] [pid 31051] [client 2001:41d0:c:58b::1:48087] mod_fcgid: stderr: PHP Warning: Cannot modify header information - headers already sent in /usr/local/ispconfig/interface/web/remote/index.php on line 17
    [Wed Feb 25 11:51:36.739635 2015] [fcgid:warn] [pid 31051] [client 2001:41d0:c:58b::1:48087] mod_fcgid: stderr: PHP Warning: Cannot modify header information - headers already sent in /usr/local/ispconfig/interface/web/remote/index.php on line 17
    [Wed Feb 25 11:51:36.739644 2015] [fcgid:warn] [pid 31051] [client 2001:41d0:c:58b::1:48087] mod_fcgid: stderr: PHP Warning: Cannot modify header information - headers already sent in Unknown on line 0

    When SOAP is called from WHMCS:

    [Wed Feb 25 11:51:52.050947 2015] [fcgid:warn] [pid 31887] [client 127.0.0.1:37012] mod_fcgid: stderr: PHP Deprecated: Automatically populating $HTTP_RAW_POST_DATA is deprecated and will be removed in a future version. To avoid this warning set 'always_populate_raw_post_data' to '-1' in php.ini and use the php://input stream instead. in Unknown on line 0
    [Wed Feb 25 11:51:52.051009 2015] [fcgid:warn] [pid 31887] [client 127.0.0.1:37012] mod_fcgid: stderr: PHP Warning: Cannot modify header information - headers already sent in /usr/local/ispconfig/interface/lib/config.inc.php on line 33
    [Wed Feb 25 11:51:52.051017 2015] [fcgid:warn] [pid 31887] [client 127.0.0.1:37012] mod_fcgid: stderr: PHP Warning: Cannot modify header information - headers already sent in /usr/local/ispconfig/interface/lib/config.inc.php on line 34
    [Wed Feb 25 11:51:52.051026 2015] [fcgid:warn] [pid 31887] [client 127.0.0.1:37012] mod_fcgid: stderr: PHP Warning: Cannot modify header information - headers already sent in /usr/local/ispconfig/interface/lib/config.inc.php on line 35
    [Wed Feb 25 11:51:52.051032 2015] [fcgid:warn] [pid 31887] [client 127.0.0.1:37012] mod_fcgid: stderr: PHP Warning: Cannot modify header information - headers already sent in /usr/local/ispconfig/interface/web/remote/index.php on line 17
    [Wed Feb 25 11:51:52.051038 2015] [fcgid:warn] [pid 31887] [client 127.0.0.1:37012] mod_fcgid: stderr: PHP Warning: Cannot modify header information - headers already sent in /usr/local/ispconfig/interface/web/remote/index.php on line 17
    [Wed Feb 25 11:51:52.051044 2015] [fcgid:warn] [pid 31887] [client 127.0.0.1:37012] mod_fcgid: stderr: PHP Warning: Cannot modify header information - headers already sent in Unknown on line 0


    This is obviously related to my problem!
    Finally, an early commencement of research approach...
     
  10. till

    till Super Moderator Staff Member ISPConfig Developer

    Do you have a whitepace before the opening <?php tag in /usr/local/ispconfig/interface/web/remote/index.php or in the file /usr/local/ispconfig/interface/lib/config.inc.php ?
     
  11. lollollollol

    lollollollol Member

    "Unfortunately" no, I have already check.
    I tried with "fresh" files from my /tmp ispconfig archive, and I also tried to convert files with "dos2unix" command.
    Files are Ok, no space at beginning or "dos" characters inside.

    Contrary to what I thought it was not related to SOAP (it seems).

    I keep trying to understand what's wrong...
    I will not repeat it in every post, but still ... thank you Till for your interest and support! :)
     
  12. lollollollol

    lollollollol Member

    F**k! Got it.

    always_populate_raw_post_data = -1

    The Apache log was the track to follow!

    Perhaps it is linked to my apache ou PHP version (Are they fully compatible with Ispconfig ?)
    # apt-cache policy apache2
    apache2:
    Installé : 2.4.10-9
    # apt-cache policy php5
    php5:
    Installé : 5.6.5+dfsg-2

    But it is solved, no more SOAP error and no more apache2 error logs! Phew ... :):p:)
     
  13. till

    till Super Moderator Staff Member ISPConfig Developer

    The raw_post_data setting is not from ispconfig and the warning in the log is not from ispconfig as well. I guess you manually activated that option in your php.ini as it is off by default in your php version, as far as I kow.
     
  14. lollollollol

    lollollollol Member

    In all my php.ini (apache2/cgi & cli) it was commented (and not by me).
    ;always_populate_raw_post_data = -1

    It's perhaps a new default presset on Jessie ?
    I don't remember how it was on Lennie or Wheezy.
     
  15. lollollollol

    lollollollol Member

    Hi Till,
    I confirm the problem on another server. I do not have, either, activated manually the option on that server.

    Defaults settings of php.ini
    ; Always populate the $ HTTP_RAW_POST_DATA variable. PHP's default behavior is
    ; to disable this feature.
    ; http://php.net/always-populate-raw-post-data
    ; always_populate_raw_post_data = On

    Modification to do:
    ; Always populate the $ HTTP_RAW_POST_DATA variable. PHP's default behavior is
    ; to disable this feature.
    ; http://php.net/always-populate-raw-post-data
    ; always_populate_raw_post_data = On
    always_populate_raw_post_data = -1

    By modifying the php.ini (which I had not modified before) the error disappears.

    apt-cache policy php5
    php5:
    Installé : 5.6.6+dfsg-2

    What I found strange is the comment in the php.ini...
    "PHP's default behavior is to disable this feature" o_O

    Best Regards,
    Laurent.
     

Share This Page