{"id":355,"date":"2008-05-19T09:43:31","date_gmt":"2008-05-19T07:43:31","guid":{"rendered":"http:\/\/daniel.haxx.se\/blog\/?p=355"},"modified":"2008-05-19T09:43:31","modified_gmt":"2008-05-19T07:43:31","slug":"the-curl-and-the-php","status":"publish","type":"post","link":"https:\/\/daniel.haxx.se\/blog\/2008\/05\/19\/the-curl-and-the-php\/","title":{"rendered":"The curl and the PHP"},"content":{"rendered":"<p><a href=\"http:\/\/curl.haxx.se\/\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-full wp-image-64\" style=\"float: left; border: 0; margin: 8px;\" title=\"cURL\" src=\"http:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2007\/09\/curl-keywords300.jpg\" alt=\"\" width=\"300\" height=\"110\" \/><\/a>We have a sort of symbiosis between the <a href=\"http:\/\/curl.haxx.se\/\">curl project<\/a> and the <a href=\"http:\/\/www.php.net\/\">PHP project<\/a>, at least we in the curl project get a lot of people learning about curl the first time when they hack PHP. This happens to the extent that to a lot of people, curl is but the name of a <a href=\"http:\/\/php.net\/curl\">PHP extension<\/a>.<\/p>\n<p>So while we can thank the PHP project for referring us a bunch of users that might not otherwise have found us, there is also quite some &#8220;friction&#8221; or perhaps better called &#8220;disagreements&#8221; between our projects and how we (don&#8217;t) interact.<a href=\"http:\/\/www.php.net\/\"><img decoding=\"async\" class=\"alignright alignnone\" style=\"float: right; border: 0; margin: 10px;\" src=\"http:\/\/static.php.net\/www.php.net\/images\/php.gif\" alt=\"PHP logo\" \/><\/a><\/p>\n<p><strong>name<\/strong><\/p>\n<p>CURL vs libcurl vs cURL. We only ever use the funny casing cURL when referring to the cURL project. The cURL project produces curl and libcurl. <a href=\"http:\/\/curl.haxx.se\/\">curl<\/a> is a command line tool and <a href=\"http:\/\/curl.haxx.se\/libcurl\/\">libcurl<\/a> is a file transfer library.<\/p>\n<p>The PHP team provides and distributes an extension they call CURL which is a libcurl binding for PHP. This naming causes a great deal of confusion to PHP users who go to the curl site only to find that it isn&#8217;t at all devoted to (just) the PHP extension but instead there&#8217;s mostly a lot of other curl stuff there!<\/p>\n<p><a href=\"http:\/\/marc.info\/?l=php-internals&amp;m=118587249817396&amp;w=2\">I&#8217;ve discussed this naming issue<\/a> with the PHP team on several occasions but they don&#8217;t agree with me that this causes confusion, and even if it would cause confusion they seem to be of the opinion that it doesn&#8217;t matter since the PHP users should find all their info about CURL and related matters on the PHP site and thus it doesn&#8217;t matter what the curl site shows or not. (Or something similar to that, I really don&#8217;t mean to put words into their mouths so you better ask them about this to get their real and unaltered view &#8211; see my link to an old conversation for some info.)<\/p>\n<p>I tend to call it <a href=\"http:\/\/curl.haxx.se\/libcurl\/php\/\">PHP\/CURL<\/a> just to make sure it is clear that we&#8217;re talking about the binding. This of course also confuse users since that&#8217;s not what it is called in the PHP documentation&#8230;<\/p>\n<p><strong>irony<\/strong><\/p>\n<p>PHP themselves recognize the problem of related projects borrowing the name, so they forbid derivate projects to include &#8220;PHP&#8221; in their names. Clearly stated in <a href=\"http:\/\/www.php.net\/license\/3_01.txt\">paragraph 4 of their license<\/a>.<\/p>\n<p><strong>versions<\/strong><\/p>\n<p>The binary build of PHP for windows have libcurl built in statically with the curl extension code, so people can&#8217;t easily replace the libcurl version used by PHP. And in general, Windows people using open source are much less likely to ever build anything on their own in my experience.<\/p>\n<p>PHP 5.2.6 was released on May 1st 2008 still has libcurl 7.16.0 built into the Windows version. That libcurl version was released in <a href=\"http:\/\/curl.haxx.se\/changes.html#7_16_0\">October 2006<\/a> and right now we have released eight (8) releases after that one. All of them including many bug fixes. This is more than slightly annoying.<\/p>\n<p><strong>support<\/strong><\/p>\n<p>This isn&#8217;t anyone&#8217;s fault but&#8230; there really aren&#8217;t many PHP people who are involved or care about the libcurl binding so those who have PHP\/CURL problems tend to ask questions on the <a href=\"http:\/\/cool.haxx.se\/cgi-bin\/mailman\/listinfo\/curl-and-php\">curl-and-php mailing list<\/a> and in the #curl IRC channel but there aren&#8217;t any PHP insiders around in those areas to answer PHP questions&#8230;<\/p>\n<p><strong>development<\/strong><\/p>\n<p>Is it just my imagination or isn&#8217;t there a lot of PHP users that have asked for the same features in the PHP libcurl binding for a long time by now, but really very few actually step forward and make a difference? So these features remain unfixed and not added. This is even &#8220;just&#8221; a binding, nothing of the really hard work is done in the binding itself&#8230; It might just be me and my head, but the ratio for doers\/plain users in the PHP world seems to be exceptionally low in comparison to many other open source areas I see. Of course this is tainted by me only really seing the PHP\/CURL side of the PHP world.<\/p>\n<p><strong>future<\/strong><\/p>\n<p>I have no reason to expect anything to change, nor do I know how I can make anything of this change on my own so I assume things will just continue working exactly like this in the future as well&#8230;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>We have a sort of symbiosis between the curl project and the PHP project, at least we in the curl project get a lot of people learning about curl the first time when they hack PHP. This happens to the extent that to a lot of people, curl is but the name of a PHP &hellip; <a href=\"https:\/\/daniel.haxx.se\/blog\/2008\/05\/19\/the-curl-and-the-php\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">The curl and the PHP<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":5,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7,9],"tags":[33,69,19,186],"class_list":["post-355","post","type-post","status-publish","format-standard","hentry","category-curl","category-license","tag-curl-and-libcurl","tag-licensing","tag-open-source","tag-php"],"_links":{"self":[{"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/posts\/355","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/comments?post=355"}],"version-history":[{"count":0,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/posts\/355\/revisions"}],"wp:attachment":[{"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/media?parent=355"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/categories?post=355"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/tags?post=355"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}