Edit report at https://bugs.php.net/bug.php?id=76719&edit=1
ID: 76719 Comment by: dzuelke at gmail dot com Reported by: dzuelke at gmail dot com Summary: PECL REST channel returns invalid XML Status: Open Type: Bug Package: PECL website Operating System: irrelevant PHP Version: Irrelevant Block user comment: N Private report: N New Comment: Ugh, XML assembled via string concatenation? No wonder this is buggy. Previous Comments: ------------------------------------------------------------------------ [2018-08-08 17:35:21] c...@php.net It seems to me that this code[1] didn't work as hoped. [1] <https://github.com/php/web-pecl/blob/da4fe2a/include/pear-rest.php#L133-L139> ------------------------------------------------------------------------ [2018-08-08 02:24:36] dzuelke at gmail dot com Description: ------------ Same again as #58446, #59098, #59666... Several endpoints in the API return invalid XML, the issue is always the same: weird XML prolog and extra elements in the middle of the document; sometimes just one more time, sometimes more, e.g. one in Authentication, three in Caching: ... <pi> <p><n>PAM</n> <c>pecl.php.net</c> <ca xlink:href="/rest/c/Authentication">Authentication</ca> <l>PHP</l> <s>PAM integration</s> <d>This extension provides PAM (Pluggable Authentication Modules) integration. PAM is a system of libraries that handle the authentication tasks of applications and services. The library provides a stable API for applications to defer to for authentication tasks.</d> <r xlink:href="/rest/r/pam"/> </p><?xml version="1.0" encoding="UTF-8" ?> <a xmlns="http://pear.php.net/dtd/rest.allreleases" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="http://pear.php.net/dtd/rest.allreleases http://pear.php.net/dtd/rest.allreleases.xsd"> <p>pam</p> <c>pecl.php.net</c> <r><v>1.0.3</v><s>stable</s></r> <r><v>1.0.2</v><s>stable</s></r> <r><v>1.0.1</v><s>stable</s></r> <r><v>1.0.0</v><s>stable</s></r> </a> The test script below outputs the number of XML prologs for each category that has more than one in the XML. Test script: --------------- for f in $(curl https://pecl.php.net/rest/c/categories.xml | grep -o 'c xlink:href="[^"]*' | cut -d'"' -f2 | sed 's/info.xml/packagesinfo.xml/' | sed s#^#https://pecl.php.net#); do { echo -n "$f: "; curl --silent $f | grep '<?xml' | wc -l; } | grep -v 1; done Actual result: -------------- https://pecl.php.net/rest/c/Authentication/packagesinfo.xml: 2 https://pecl.php.net/rest/c/Caching/packagesinfo.xml: 4 https://pecl.php.net/rest/c/Database/packagesinfo.xml: 2 https://pecl.php.net/rest/c/File%2BFormats/packagesinfo.xml: 2 https://pecl.php.net/rest/c/GUI/packagesinfo.xml: 2 https://pecl.php.net/rest/c/Images/packagesinfo.xml: 3 https://pecl.php.net/rest/c/Networking/packagesinfo.xml: 3 https://pecl.php.net/rest/c/Numbers/packagesinfo.xml: 2 https://pecl.php.net/rest/c/PHP/packagesinfo.xml: 2 https://pecl.php.net/rest/c/System/packagesinfo.xml: 2 https://pecl.php.net/rest/c/Text/packagesinfo.xml: 2 https://pecl.php.net/rest/c/Web%2BServices/packagesinfo.xml: 2 ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=76719&edit=1 -- PECL development discussion Mailing List (http://pecl.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php