<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>SFX Blog &#187; Programming</title>
	<atom:link href="http://www.sfx.lv/category/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.sfx.lv</link>
	<description>Just another blog</description>
	<lastBuildDate>Fri, 03 Feb 2012 11:29:33 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Lost Mysql root password?</title>
		<link>http://www.sfx.lv/2010/12/lost-mysql-root-password/</link>
		<comments>http://www.sfx.lv/2010/12/lost-mysql-root-password/#comments</comments>
		<pubDate>Wed, 29 Dec 2010 19:11:00 +0000</pubDate>
		<dc:creator>sfx</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[faq]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[password]]></category>

		<guid isPermaLink="false">http://www.sfx.lv/?p=1633</guid>
		<description><![CDATA[Nesen gadījas situācija, kad piemirsās Mysql root parole. Pirmā doma &#8211; nest nost datubāzi, saglabājot datu failus un tad mēģināt likt tos pa jaunu. Neesmu nekāds lielais eksperts šādās lietās [...]]]></description>
			<content:encoded><![CDATA[<p>Nesen gadījas situācija, kad piemirsās Mysql root parole. Pirmā doma &#8211; nest nost datubāzi, saglabājot datu failus un tad mēģināt likt tos pa jaunu. Neesmu nekāds lielais eksperts šādās lietās tapēc palūdzu padomu tantei <a href="http://dev.mysql.com/doc/refman/5.5/en/resetting-permissions.html" target="_blank">Googlei</a> un risinājums diezgan elementārs, piemēr Unix vidē:</p>
<p>1. Nokillojam Mysql procesu.</p>
<p>2. Izveidojam failu (mysql-init) ar saturu:</p>
<pre style="padding-left: 30px;">UPDATE mysql.user SET Password=PASSWORD('ManaJaunaParole') WHERE User='root';
FLUSH PRIVILEGES;</pre>
<p>3. Palaižam mysql procesu izpildot failu ar augstākminēto saturu:</p>
<pre style="padding-left: 30px;"># mysqld_safe --init-file=/home/me/mysql-init &amp;</pre>
<p>That`s all&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sfx.lv/2010/12/lost-mysql-root-password/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL dīvainība</title>
		<link>http://www.sfx.lv/2009/06/mysql-divainiba/</link>
		<comments>http://www.sfx.lv/2009/06/mysql-divainiba/#comments</comments>
		<pubDate>Thu, 04 Jun 2009 15:30:40 +0000</pubDate>
		<dc:creator>sfx</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[db]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[postgres]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://sfx.elife.lv/?p=649</guid>
		<description><![CDATA[Pārsvarā esmu strādājis ar Oracle vai Postgres datubāzēm. MySQL principā izmantoju ļoti reti un ļoti maziem projektiem vai vienkāršām mājas lapām, līdz ar to, tikai tagad pamanīju tādu kļūdu, kas [...]]]></description>
			<content:encoded><![CDATA[<p>Pārsvarā esmu strādājis ar Oracle vai Postgres datubāzēm. MySQL principā izmantoju ļoti reti un ļoti maziem projektiem vai vienkāršām mājas lapām, līdz ar to, tikai tagad pamanīju tādu kļūdu, kas augstāk minētājām datubāzēm ir loģiska un saprotama darbība.</p>
<p>Ir vienkārš loģisks seleksts kurš FROM daļā satur apakšselektu</p>
<blockquote><p><code>SELECT t1.* FROM (SELECT * FROM t WHERE 1 = 1) AS t1</code></p></blockquote>
<p><span id="more-649"></span>Šajā gadījumā viss ir ok un selekts normāli izpildās, bet ja no ši selekta gribam izveidot skatu (view), tad nekā</p>
<blockquote><p><code>CREATE VIEW t1_v AS<br />
SELECT t1.* FROM (SELECT * FROM t WHERE 1 = 1) AS t1</code></p></blockquote>
<blockquote><p><code>Error Code : 1349<br />
View's SELECT contains a subquery in the FROM clause</code></p></blockquote>
<p>Protams ir apejas variants, uztaisot skatu no apakšselekta, bet nu tāpat nesaprotami, kapēc MySQL ierobežo šādu darbību, jo skats jau ir gandrīz kā vienkārš selekts.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sfx.lv/2009/06/mysql-divainiba/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Simple Javascript Dialog</title>
		<link>http://www.sfx.lv/2009/04/simple-javascript-dialog/</link>
		<comments>http://www.sfx.lv/2009/04/simple-javascript-dialog/#comments</comments>
		<pubDate>Wed, 01 Apr 2009 19:22:46 +0000</pubDate>
		<dc:creator>sfx</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[dialog]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[JS]]></category>
		<category><![CDATA[prototype]]></category>

		<guid isPermaLink="false">http://sfx.elife.lv/?p=518</guid>
		<description><![CDATA[Vairākos savos projektos bija vajadzība pēc visādiem dialogiem, beigās vienkāršāk bija uzrakstīt vienu savu JS klasi, nevis implementēt kautko gatavu. Tad nu nesēdēšu pūram virsū un padalīšos, ja nu kādam [...]]]></description>
			<content:encoded><![CDATA[<p>Vairākos savos projektos bija vajadzība pēc visādiem dialogiem, beigās vienkāršāk bija uzrakstīt vienu savu JS klasi, nevis implementēt kautko gatavu. Tad nu nesēdēšu pūram virsū un padalīšos, ja nu kādam tomēr noder. Tik viena lieta gan, tā kā neesmu baigais JS specs, tad šis ir uztaisīts izmantojot <a href="http://www.prototypejs.org/" target="_blank">Prototype JS</a> framework un vairākas <a href="http://script.aculo.us/" target="_blank">efektu bibliotēkas</a>.</p>
<p> </p>
<div id="attachment_519" class="wp-caption aligncenter" style="width: 587px"><img class="size-full wp-image-519" title="Javascript Dialog" src="http://sfx.elife.lv/wp-content/uploads/2009/04/js-diologs.jpg" alt="Javascript Dialog based on Prototype" width="577" height="188" /><p class="wp-caption-text">Javascript Dialog based on Prototype</p></div>
<p><span id="more-518"></span><br />
<a href="http://sfx.elife.lv/?dl_id=3">Source here!</a></p>
<p> </p>
<p>Kā to implementēt:</p>
<p>Variants 1</p>
<blockquote>
<pre> onclick="new Dialog('Some text here ...', {width : 300})"</pre>
</blockquote>
<p>Variants 2</p>
<blockquote>
<pre> onclick="new Dialog('Error text here ...', {style : 'err'})"</pre>
</blockquote>
<p>Variants 3</p>
<blockquote>
<pre> function dialogSample2(){
            var params = {
                           title : "Sample Dialog #2",
                           width : 300,
                           transp: false
                         }
            new Dialog('Some text here ...', params);
       }</pre>
</blockquote>
<p>&gt; Variants 4:</p>
<blockquote>
<pre>  function dialogSample4(){
            var html = '&lt;input type="button" onclick="closeDialog(\'Sample_Dialog_4_dialog\')" value="Close" /&gt;';
            var params = {
                           id    : "Sample_Dialog_4",
                           title : "Sample Dialog #4",
                           width : 300,
                           transp: true
                         }
            new Dialog(html, params);
  }</pre>
</blockquote>
<p><script type="text/javascript"><!--
google_ad_client = "pub-1832742237643712";
/* Blog 250x250 */
google_ad_slot = "7239281961";
google_ad_width = 250;
google_ad_height = 250;
// --></script><br />
<script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sfx.lv/2009/04/simple-javascript-dialog/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>WebServ vs. DB Serv</title>
		<link>http://www.sfx.lv/2009/03/webserv-vs-db-serv/</link>
		<comments>http://www.sfx.lv/2009/03/webserv-vs-db-serv/#comments</comments>
		<pubDate>Fri, 13 Mar 2009 11:15:38 +0000</pubDate>
		<dc:creator>sfx</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Instance]]></category>
		<category><![CDATA[OOP]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://sfx.elife.lv/?p=335</guid>
		<description><![CDATA[Neliela dilemma. Vai ieliekot lietotāja datus instancē būs efektīvāk nekā lieki pieprasījumi uz DB. Lai gan no otras puses, ieliekot instancē mums nepieciešams vairāk webservera atmiņas.
static $user_instanc;
public $tb_users = 'users';

public [...]]]></description>
			<content:encoded><![CDATA[<p>Neliela dilemma. Vai ieliekot lietotāja datus instancē būs efektīvāk nekā lieki pieprasījumi uz DB. Lai gan no otras puses, ieliekot instancē mums nepieciešams vairāk webservera atmiņas.<span id="more-335"></span></p>
<pre>static $user_instanc;
public $tb_users = 'users';

public function getUserById($user_id){
    if(!is_object(self::$user_instanc)
        or self::$user_instanc-&gt;id != $user_id){
        $db = $this-&gt;getDb();
        $sql = "SELECT * FROM {$tb_users} ".
               "WHERE id = {$db-&gt;quote($user_id)}";
        $result = $db-&gt;fetchAll($sql);
        if($result) $this-&gt;user_instanc = $result[0];
    }
    return self::$user_instanc;
}</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.sfx.lv/2009/03/webserv-vs-db-serv/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Kā piezvanīt&#8230;</title>
		<link>http://www.sfx.lv/2007/12/ka-piezvanit/</link>
		<comments>http://www.sfx.lv/2007/12/ka-piezvanit/#comments</comments>
		<pubDate>Sat, 29 Dec 2007 12:11:58 +0000</pubDate>
		<dc:creator>sfx</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[mobile]]></category>

		<guid isPermaLink="false">http://sfx.elife.lv/2007/12/29/ka-piezvanit/</guid>
		<description><![CDATA[Nebiju piefiksējis ka ir iespējams šāds links:
&#60;a href="wtai://wp/mc;tel_numurs"&#62;Call me!&#60;/a&#62;
Bet nu viņš darbojas tikai protams uz mobilajiem telefoniem, tb, piezvanīt uz numuru.
]]></description>
			<content:encoded><![CDATA[<p>Nebiju piefiksējis ka ir iespējams šāds links:</p>
<p><code>&lt;a href="wtai://wp/mc;tel_numurs"&gt;Call me!&lt;/a&gt;</code></p>
<p>Bet nu viņš darbojas tikai protams uz mobilajiem telefoniem, tb, piezvanīt uz numuru.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sfx.lv/2007/12/ka-piezvanit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google custom search</title>
		<link>http://www.sfx.lv/2007/07/google-custom-search/</link>
		<comments>http://www.sfx.lv/2007/07/google-custom-search/#comments</comments>
		<pubDate>Wed, 25 Jul 2007 04:10:35 +0000</pubDate>
		<dc:creator>sfx</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[custom search]]></category>
		<category><![CDATA[google]]></category>

		<guid isPermaLink="false">http://sfx.elife.lv/?p=63</guid>
		<description><![CDATA[Pašam savs meklētājs? Google piedāvā izmeidot katram savu meklētāju kur protams katrs pats var iezveidot dažādus filtrus, izskatu, utt.
   Kā tas apmēram izskatās, šādi - SFX Search Engine.
   Labums kāds, piemēram, esmu izveidojis [...]]]></description>
			<content:encoded><![CDATA[<p><img border="0" vspace="5" align="left" width="110" src="http://google.com/coop/images/google_coop_xsm.gif" hspace="5" alt="Google Custom Search" height="43" />Pašam savs meklētājs? <a target="_blank" href="http://www.google.com">Google </a>piedāvā izmeidot <a target="_blank" href="http://www.google.com/coop/cse/">katram savu meklētāju</a> kur protams katrs pats var iezveidot dažādus filtrus, izskatu, utt.</p>
<p>   Kā tas apmēram izskatās, šādi - <a target="_blank" href="http://www.google.com/coop/cse?cx=013060346267203736254%3Aqghkspp7y5a">SFX Search Engine</a>.</p>
<p>   Labums kāds, piemēram, esmu izveidojis savu blogu, bet meklēšanas iespējas viņā ir ļoti sliktas vai nu vispār tās nav, tad nu lūk, izveidojam custom serach attiecīgi, lai meklē tikai pa vienu norādīto lapu (manā gadījumā pa piecām lapām) ieliekam Googles iedoto scriptiņu lapā, vai norādi meklēšanas linku un lieta darīta.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sfx.lv/2007/07/google-custom-search/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP4 SUPPORT DUE DATE 2008.08</title>
		<link>http://www.sfx.lv/2007/07/php4-support-due-date-200808/</link>
		<comments>http://www.sfx.lv/2007/07/php4-support-due-date-200808/#comments</comments>
		<pubDate>Thu, 19 Jul 2007 08:00:33 +0000</pubDate>
		<dc:creator>sfx</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://sfx.elife.lv/?p=59</guid>
		<description><![CDATA[PHP4 supports tiks pārtraukts nākošā gada augustā.  Tā kā tie, kuri vēl nav migrējušies uz PHP5 &#8211; būtu vien pēdējais laiks. Iemesls kāpēc tiek pārtraukts supports tika minēts resursu trūkums, jo [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://static.php.net/www.php.net/images/php.gif" border="0" alt="" hspace="5" vspace="5" width="120" height="67" align="left" />PHP4 supports tiks pārtraukts nākošā gada augustā.  Tā kā tie, kuri vēl nav migrējušies uz PHP5 &#8211; būtu vien pēdējais laiks. Iemesls kāpēc tiek pārtraukts supports tika minēts resursu trūkums, jo kā zināms PHP strādā pie jaunās PHP6 versijas.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sfx.lv/2007/07/php4-support-due-date-200808/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lost Oracle 10g SYSTEM password</title>
		<link>http://www.sfx.lv/2007/07/lost-oracle-10g-system-password/</link>
		<comments>http://www.sfx.lv/2007/07/lost-oracle-10g-system-password/#comments</comments>
		<pubDate>Sat, 07 Jul 2007 16:41:25 +0000</pubDate>
		<dc:creator>sfx</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[db]]></category>
		<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">http://sfx.elife.lv/?p=54</guid>
		<description><![CDATA[Treniņam nācās uzinstalēt uz sava PC (WinXP) Oracle DB 10g. Viss jau skaisti, bet kadu laiku nelietoju un piemirsās SYSTEM usera parole, ko darīt? Domāju ka būs piii. Ņemam palīgā Google un [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.oracle.lv" target="_blank"><img src="http://oracleimg.com/admin/images/ocom/hp/logos/oralogo_lv.gif" border="0" alt="Oralce" hspace="5" vspace="5" width="133" height="38" align="left" /></a>Treniņam nācās uzinstalēt uz sava PC (WinXP) Oracle DB 10g. Viss jau skaisti, bet kadu laiku nelietoju un piemirsās <em>SYSTEM</em> usera parole, ko darīt? Domāju ka būs piii. Ņemam palīgā Google un meklējam risinājumu, risinājums tomēr samērā vienkārš:</p>
<p> Caur šella (no weba nesanāks) pieslēdzamies DB ar lieotāju <em>SYSDBA</em> un ar &#8216;<em>alter user</em>&#8216; nomainam <em>SYSTEM</em> paroli.<br />
<code><br />
<span style="text-decoration: line-through;">sql&gt; connect<br />
sql&gt; user_name: sysdba<br />
sql&gt; user_password:</span></code><code><br />
</code><br />
<code>sql&gt; conn /as sysdba</code><br />
<code>sql&gt; aleter user system identified by "password";</code><code><br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sfx.lv/2007/07/lost-oracle-10g-system-password/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Oracle Forms Menu Trigger</title>
		<link>http://www.sfx.lv/2007/06/oracle-forms-menu-trigger/</link>
		<comments>http://www.sfx.lv/2007/06/oracle-forms-menu-trigger/#comments</comments>
		<pubDate>Tue, 26 Jun 2007 14:51:26 +0000</pubDate>
		<dc:creator>sfx</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[oracle forms]]></category>

		<guid isPermaLink="false">http://sfx.elife.lv/?p=52</guid>
		<description><![CDATA[Kā sadalīti visi 45 SPECIAL triggeri:

Tools menu: SPECIAL1 to SPECIAL15
Reports menu: SPECIAL16 to SPECIAL30
Actions menu: SPECIAL31 to SPECIAL45

]]></description>
			<content:encoded><![CDATA[<p>Kā sadalīti visi 45 SPECIAL triggeri:</p>
<ul>
<li>Tools menu: SPECIAL1 to SPECIAL15</li>
<li>Reports menu: SPECIAL16 to SPECIAL30</li>
<li>Actions menu: SPECIAL31 to SPECIAL45</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.sfx.lv/2007/06/oracle-forms-menu-trigger/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Image Thumbnail Viewer</title>
		<link>http://www.sfx.lv/2007/02/image-thumbnail-viewer/</link>
		<comments>http://www.sfx.lv/2007/02/image-thumbnail-viewer/#comments</comments>
		<pubDate>Fri, 02 Feb 2007 07:59:29 +0000</pubDate>
		<dc:creator>sfx</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Image Thumbnail]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[JS]]></category>

		<guid isPermaLink="false">http://sfx.elife.lv/?p=6</guid>
		<description><![CDATA[Image Thumbnail Viewer is a      compact, unobtrusive image viewer that can be applied to any link on the      page to [...]]]></description>
			<content:encoded><![CDATA[<p>Image Thumbnail Viewer is a      compact, unobtrusive image viewer that can be applied to any link on the      page to load the desired image inside a sleek interface based on the link&#8217;s     <code>"href"</code> value. Simply give the link in question- be it a text      link or image thumbnail link- a rel attribute of &#8220;<code>thumbnail</code>&#8220;,      and you&#8217;re done.</p>
<p><span id="more-6"></span></p>
<p align="left">This script will center the enlarged image on the page and  optionally display a text description based on the activating link&#8217;s <code>"title"</code> attribute. A fading effect can be turned on/off  to bring the final image into view.</p>
<p align="left"><strong>Step 1: </strong>Add the following to     the &lt;head&gt; section of your page:</p>
<p align="left">&nbsp;</p>
<blockquote><p> <code> </code></p>
<pre>&lt;script src="thumbnailviewer.js" type="text/javascript"&gt; &lt;/script&gt;</pre>
</blockquote>
<p align="left">The code references three files, which you should        download below:</p>
<ul>
<li>       <a href="http://www.dynamicdrive.com/dynamicindex4/thumbnailviewer.css">thumbnailviewer.css</a></li>
<li>       <a href="http://www.dynamicdrive.com/dynamicindex4/thumbnailviewer.js">thumbnailviewer.js</a></li>
<li>       <a href="http://www.dynamicdrive.com/dynamicindex4/loading.gif">loading.gif</a> (used by the &#8220;loading&#8221; div message)</li>
</ul>
<p align="left"><strong>Step 2: </strong>Add the below sample HTML to your      page, which shows setting up the script on a regular link and a thumbnail      image link:</p>
<blockquote>
<p align="left"> <code>
<pre>&lt;p&gt;&lt;a href="http://img184.imageshack.us/img184/1159/castleyi6.gif" rel="thumbnail" title="This is beautiful castle for sale!"&gt;Castle&lt;/a&gt;&lt;/p&gt;
<pre></code></p>
<p><code>
<pre>&lt;p&gt;&lt;a href="http://img201.imageshack.us/img201/6923/countryxb6.gif"" rel="thumbnail"&gt;&lt;img src="thumbnail.gif" style="width: 50px; height: 50px" /&gt;&lt;/a&gt;&lt;/p&gt;
<pre></code></p></blockquote>
<p align="left">That's it for installation!</p>
<p align="left">As mentioned in the intro, to use this script, just give the  link on the page a <code>rel="thumbnail"</code> declaration, with the <code> "href"</code> pointing to the URL to the enlarged image. If the link contains a <code>"title"</code> attribute, its value will be used as the image's  description:</p>
<blockquote>
<p align="left"><code>
<pre>&lt;a href="castle.gif" rel="thumbnail" title="This is beautiful castle for sale!"&gt;Castle&lt;/a&gt;
<pre></code></p>
</blockquote>
<p align="left">Finally, you should know that many aspects of this script can be  customized. Take a look at the top of <a href="http://www.dynamicdrive.com/dynamicindex4/thumbnailviewer.js"> thumbnailviewer.js</a> for what you can change:</p>
<blockquote>
<p align="left"><code>
<pre>enableTitle: true, //Should "title" attribute of link be used as description?<br />
enableAnimation: true, //Enable fading animation?<br />
definefooter: '&lt;div class="footerbar"&gt;CLOSE X&lt;/div&gt;', //Define HTML for footer interface<br />
defineLoading: '&lt;img src="loading.gif" /&gt; Loading Image...', //Define HTML for "loading" div
<pre></code></p></blockquote>
<p align="left">Now go show off your images!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sfx.lv/2007/02/image-thumbnail-viewer/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Creating an Ajax Process Using PHP and Oracle</title>
		<link>http://www.sfx.lv/2007/02/creating-an-ajax-process-using-php-and-oracle/</link>
		<comments>http://www.sfx.lv/2007/02/creating-an-ajax-process-using-php-and-oracle/#comments</comments>
		<pubDate>Fri, 02 Feb 2007 07:26:44 +0000</pubDate>
		<dc:creator>sfx</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[db]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://sfx.elife.lv/?p=5</guid>
		<description><![CDATA[For some time now, Ajax (Asynchronous JavaScript and XML), has been all the rage in the Web development world. Coming to the forefront with some of Google&#8217;s features (Suggest, Maps, [...]]]></description>
			<content:encoded><![CDATA[<p>For some time now, Ajax (Asynchronous JavaScript and XML), has been all the rage in the Web development world. Coming to the forefront with some of Google&#8217;s features (Suggest, Maps, Gmail, and so on), Ajax performs server requests without the user having to submit a form or click on a link. In other words, the Web browser can make the server request, and handle the response, without the user doing anything or even knowing that this is happening. The immediacy that Ajax brings is not only a great convenience, but it can also be downright cool.<span id="more-5"></span><br />
In this recipe, I discuss all the code necessary to use Ajax to go from a simple Web page to a JavaScript function to an XMLHttpRequest to a PHP script and, finally, to an Oracle database. Along with the code, I do talk about the individual pieces with respect to the whole picture: what each chunk does and why it&#8217;s important. By reading this HowTo, you will acquire not only some sample code but also, hopefully, a broader understanding of the whole Ajax concept.</p>
<p><!--more--></p>
<h2>Background</h2>
<p>The example I&#8217;ll be working with will be a registration form (or a minimal part of it, anyway). The theory is that I must confirm unique email addresses in the users table so that people cannot register multiple times using the same address. This is normally part of the validation process that comes after the user submits the form to the handling PHP script. But why should the user have to wait until then for this piece of validation? Instead, as soon as the user enters their email address and goes to the next form field, the email address will be immediately validated. But to do so, I still need to query the database, which is where Ajax comes in.</p>
<p>The simplified table structure for this example could be created with the following SQL statement (without the presence of the other tables, I&#8217;ve done away with identifying keys and such).</p>
<blockquote>
<pre>CREATE TABLE users (
	email VARCHAR2(60)
)</pre>
</blockquote>
<p>Obviously you could expand on this in many ways. For now, though, the important thing is that the sample code assumes you have established such a table and can connect to it from a PHP script. Some records must be in this table for the example to fully function, so you should populate it like so:</p>
<blockquote>
<pre>INSERT INTO users (email) VALUES ('this@that.com')
INSERT INTO users (email) VALUES ('me@school.edu')
INSERT INTO users (email) VALUES ('fake@address.net')</pre>
</blockquote>
<p>After you&#8217;ve created and populated the table, you can begin coding. As I mentioned, there are two scripts involved. To develop and test everything, you will:</p>
<ol class="bodycopy">
<li>Create the PHP script that queries the Oracle database.</li>
<li>Manually test the PHP script to see how it works.</li>
<li>Write the JavaScript code that interacts with the PHP script.</li>
<li>Make the HTML form that ties into the JavaScript.</li>
<li>Test the entire process.</li>
</ol>
<h2>Step 1: Programming the Database Query</h2>
<p>The entire PHP script is called ajax.php. (See <a class="bodylink" href="http://www.oracle.com/technology/pub/files/ullman-ajax-samples.zip">sample code zip</a>.) The purpose of this script is to run a query in Oracle and print a message based upon the results of the query. This is all very basic Oracle, SQL, and PHP, but I&#8217;ll run through it to clarify what&#8217;s happening.</p>
<p>The script expects to receive an email address in the URL, which is available in the variable $_GET['email']. Then the script connects to the Oracle database. The query itself counts how many records in the users table have that email address:</p>
<blockquote>
<pre>SELECT COUNT(*) AS NUM_ROWS FROM users WHERE email='{$_GET['email']}'</pre>
</blockquote>
<p>This should return either 0 or 1 (or nothing at all). The query is executed in Oracle and the results are bound to the PHP $rows variable. Now $rows represents how many records in the database have that email address. With respect to Ajax, the important part of the script is shown below.</p>
<blockquote>
<pre>if ($rows &gt; 0) {
	echo 'Email address has already been registered!';
} else {
	echo 'Email address is available!';
}</pre>
</blockquote>
<p>One of those two messages will be printed, based upon the value of $rows. That&#8217;s all there is to this page! Absolutely no HTML is needed as this script won&#8217;t be used like a standard Web page. If you want to improve this script, you can confirm that the email address matches a regular expression pattern for email addresses. If so, execute the query like normal; if not, echo a statement saying that it&#8217;s not a valid email address. At the very least, you&#8217;d likely want to prevent SQL injection attacks. (I.e., avoid using the $_GET variable in your query without some assurances of its validity.)</p>
<h2>Step 2: Testing the PHP Script</h2>
<p>Because this entire Ajax process involves several technologies—HTML, JavaScript, PHP, SQL, and Oracle—you&#8217;ll be best off testing each piece as you go. If you don&#8217;t, you can easily get lost trying to find where a problem exists. Testing this PHP script should be fairly easy:</p>
<ol class="bodycopy">
<li>Make sure you&#8217;ve created the table in Oracle and populated it.</li>
<li>Edit ajax.php so that it uses valid connection parameters for your Oracle installation.</li>
<li>Save the script as ajax.php.</li>
<li>Place it in the proper directory for your Web server.</li>
<li>Go to http://yoururl/ajax.php?email=X in your Web browser.</li>
</ol>
<p>In place of X, use one of the email addresses that&#8217;s already in the database (e.g., http://yoururl/ajax.php?email=this@that.com). You should see the &#8220;Email address has already been registered!&#8221; message. Then use an email address that has not been stored. You should see the &#8220;Email address is available!&#8221; text. Once you have that working, you can move on to the actual Ajax aspect of this example.</p>
<h2>Step 3: Programming the JavaScript</h2>
<p>This section of the process is probably the most difficult unless you&#8217;ve done tons of JavaScript already. In any case, the JavaScript code is the heart of the Ajax process, as it performs and handles the request from the PHP page. I&#8217;ll go through this code in detail.</p>
<p>The JavaScript code will define three functions. The first creates a request object variable:</p>
<blockquote>
<pre>function createRequestObject() {
	var ro;
	if (navigator.appName == "Microsoft Internet Explorer") {
		ro = new ActiveXObject("Microsoft.XMLHTTP");
	} else {
		ro = new XMLHttpRequest();
	}
	return ro;
}</pre>
</blockquote>
<p>You should be able to use this code for any Ajax application without modification. If the Web browser being used is Microsoft Internet Explorer, then the ro variable is initialized as an ActiveXObject of type Microsoft.XMLHTTP. For all other browsers, ro is a straightforward XMLHttpRequest type of object. That&#8217;s really nothing else to it. The ro variable is now an object with all the necessary functionality to perform an asynchronous request. After creating the request object variable, this function then returns it. This function is immediately called by the JavaScript code when the page is first loaded:</p>
<blockquote>
<pre>var http = createRequestObject();</pre>
</blockquote>
<p>Now http represents the object and is globally available in the other functions. Next up is the function that calls the PHP script:</p>
<blockquote>
<pre>function sendRequest(email) {
	http.open('get', 'ajax.php?email=' + encodeURIComponent(email));
	http.onreadystatechange = handleResponse;
	http.send(null);
}</pre>
</blockquote>
<p>This function takes one argument, which is the email address to be verified. Then it opens a connection to the PHP script. As the first argument in the open() method indicates, the request will be of type get, as opposed to post. The email address is appended to the URL, resulting in a page request like ajax.php?email=this@that.com. As you already know, this is how the PHP script is properly called. The encodeURIComponent() function just encodes the submitted value to make it URL-safe. The third line within the function tells the object what JavaScript function to call after the request has been made. The final line actually makes the request.To recap, the first function, createRequestObject(), makes the object variable that&#8217;s needed. The second function, sendRequest(), makes the actual request of the PHP script. Now we need a function that handles that request:</p>
<blockquote>
<pre>function handleResponse() {
	if (http.readyState == 4) {
		document.getElementById('email_label').innerHTML = http.responseText;
	}
}</pre>
</blockquote>
<p>The previous function told the request object to call this function after the request has been made. This function first checks that the request was successfully made. If so, then http.readyState will be equal to 4. It could also be equal to 0 through 3 (you can search online for their actual meanings, if you care), but being equal to 4 means the request worked. The results of the request will be stored in the http.responseText attribute, the results being either of the two messages echoed by the PHP script. To be clear, if the request worked, then http.responseText will either be &#8220;Email address has already been registered!&#8221; or &#8220;Email address is available!&#8221;.At this point, the JavaScript knows what the result of the PHP script was. All you need to do is get the JavaScript to notify the user of that result. An easy option would be to use an alert() box:</p>
<blockquote>
<pre>alert(http.responseText);</pre>
</blockquote>
<p>If you put this within the conditional, you&#8217;ll see the result when you test the whole application. (In fact, alert() is a great debugging tool to confirm what&#8217;s going on in your JavaScript code.) However, I find these alerts to be annoying as an end user and would rather print the message next to the form&#8217;s email input. To do so, I refer to the DOM (Document Object Model). Specifically, I assign the http.responseText to an element in my page called email_label. You&#8217;ll see this in Step 4.Whew! Hopefully you followed all that. To repeat, this is the most important and most complex part of this sequence. The JavaScript uses three functions to do three things: define a browser-specific request object; make a request to the PHP script; and, do something with the results of the request. If you&#8217;re confused by any of this, or when it comes time to make a more complex Ajax application, you&#8217;ll likely want to do a little research on JavaScript and DOM.</p>
<h2>Step 4: Making a JavaScript-functional HTML Form</h2>
<p>As I wrote previously, the premise behind this example is a registration form that takes, at the least, an email address. The minimal form would be:</p>
<blockquote>
<pre>&lt;form action="somepage.php" method="post"&gt;
Email Address: &lt;input name="email" type="text" size="30" maxlength="60" /&gt;&lt;br /&gt;
First Name: &lt;input name="first_name" type="text" size="20" maxlength="20" /&gt;&lt;br /&gt;
(Rest of the form...)
&lt;/form&gt;</pre>
</blockquote>
<p>That&#8217;s it! Well, not quite. You&#8217;d want more inputs (a &#8220;submit&#8221; button, and so on). But for the purposes of this example, that&#8217;s all you need. To avoid confusion, note that the action and method attributes here have nothing to do with the ajax.php script (which doesn&#8217;t handle this form&#8217;s submission).Two more things are required, though. First, this form must somehow call the JavaScript code that makes the request. You could use several tricks to do that: make a clickable link, wait for the submit button to be clicked, and so on. I&#8217;ve decided that once the user has entered an email address and has gone on to the next form element, the JavaScript should be called. This requires the onchange() method, which I&#8217;ll add to the email input:</p>
<blockquote>
<pre>Email Address: &lt;input name="email" type="text" size="30" maxlength="60"

onchange="sendRequest(this.form.email.value)" /&gt;</pre>
</blockquote>
<p>As soon as the user changes the value in this input, including entering anything for the first time, and then tabs or clicks to another input, the JavaScript sendRequest() function will be called. It is fed one argument, the value of the email form input. If you look back at the JavaScript code, you can see how the value typed here gets sent to that function, which in turn is sent to the PHP script.The second thing the HTML form needs is a place where JavaScript can &#8220;write&#8221; the received message so that it&#8217;s visible to the user. As the handleResponse() function dictates, that message will be assigned to the innerHTML of an element called email_label. For this I add a span with that ID after the email address input:</p>
<blockquote>
<pre>&lt;span id="email_label"&gt;&lt;/span&gt;</pre>
</blockquote>
<p>That&#8217;s it for tying the HTML form to the JavaScript. (See Listing 1 in the <a class="bodylink" href="http://www.oracle.com/technology/pub/files/ullman-ajax-samples.zip">sample code zip</a> for the final code.) Now it&#8217;s time to see how it works!</p>
<h2>Step 5: Testing the Ajax Process</h2>
<p>Having completed the HTML and JavaScript, you should save that as ajax.html (or anything, really), then place it in the same directory as the PHP script. Load the form by running it in your Web browser, through a URL, not by opening it from the file system (i.e, go to http://yoururl/ajax.html). Type an unused email address in the proper input, then tab or click on the next input. Repeat using a stored email address.</p>
<p>The two screenshots below show the results you should see. Absolute magic!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sfx.lv/2007/02/creating-an-ajax-process-using-php-and-oracle/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>PHP 5.2.0 Released</title>
		<link>http://www.sfx.lv/2007/02/php-520-released/</link>
		<comments>http://www.sfx.lv/2007/02/php-520-released/#comments</comments>
		<pubDate>Fri, 02 Feb 2007 07:13:34 +0000</pubDate>
		<dc:creator>sfx</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://sfx.elife.lv/?p=4</guid>
		<description><![CDATA[The PHP development team is proud to announce the immediate release of PHP  5.2.0. This release is a major improvement in the 5.X series, which includes a  large [...]]]></description>
			<content:encoded><![CDATA[<p>The PHP development team is proud to announce the immediate release of PHP  5.2.0. This release is a major improvement in the 5.X series, which includes a  large number of new features, bug fixes and security enhancements.  Further details about this release can be found in the release announcement  <a href="http://www.php.net/releases/5_2_0.php">5.2.0</a>, the full list of changes is  available in the ChangeLog <a href="http://www.php.net/ChangeLog-5.php#5.2.0">PHP 5</a>. All users of PHP, especially those using earlier PHP 5 releases are advised to upgrade to this release as soon as possible. This release also obsoletes the 5.1 branch of PHP.</p>
<p>For users upgrading from PHP 5.0 and PHP 5.1 there is an upgrading guide  available <a href="http://www.php.net/UPDATE_5_2.txt">here</a>, detailing the changes between those releases and PHP 5.2.0.</p>
<p><span id="more-4"></span></p>
<ul>
<li>Updated bundled OpenSSL to version 0.9.8d in the Windows distro. (Edin)</li>
<li>Updated Postgresql client libraries to 8.1.4 in the Windows distro. (Edin)</li>
<li>Updated PCRE to version 6.7. (Ilia)</li>
<li>Updated libsqlite in ext/pdo_sqlite to 3.3.7. (Ilia)</li>
<li>Updated bundled MySQL client library to version 5.0.22 in the Windows distribution. (Edin)</li>
<li>Updated timezonedb to version 2006.14. (Derick)</li>
<li>Added ability to make SOAP call userspace PHP&lt;-&gt;XML converters. (Dmitry)</li>
<li>Added support for character sets in pg_escape_string() for PostgreSQL 8.1.4 and higher. (Ilia)</li>
<li>Added support for character sets in PDO quote() method for PostgreSQL 8.1.4 and higher. (Ilia)</li>
<li>Added DSA key generation support to openssl_pkey_new(), FR #38731 (marci at balabit dot hu, Tony)</li>
<li>Added SoapServer::setObject() method (it is a simplified version of SoapServer::setClass() method). (Dmitry)</li>
<li>Added support for hexadecimal entity in imagettftext() for the bundled GD. (Pierre)</li>
<li>Added support for httpOnly flag for session extension and cookie setting functions. (Scott MacVicar, Ilia)</li>
<li>Added version specific registry keys to allow different configurations for different php version. (Richard, Dmitry)</li>
<li>Added &#8220;PHPINIDir&#8221; Apache directive to apache and apache_hooks SAPIs. (Dmitry)</li>
<li>Added an optional boolean parameter to memory_get_usage() and memory_get_peak_usage() to get memory size allocated by emalloc() or real size of memory allocated from system. (Dmitry)</li>
<li>Added Zip Archive extension. (Pierre)</li>
<li>Added RFC1867 fileupload processing hook. (Stefan E.)</li>
<li>Added JSON and Filter extensions. (Derick, Rasmus, Pierre, Ilia)</li>
<li>Added error messages to disk_free_space() and disk_total_space() functions. FR #37971 (Tony)</li>
<li>Added PATHINFO_FILENAME option to pathinfo() to get the filename. (Toby S.  and Christian S.)</li>
<li>Added array_fill_keys() function. (Marcus, Matt Wilmas)</li>
<li>Added posix_initgroups() function. (Ilia)</li>
<li>Added an optional parameter to parse_url() to allow retrieval of distinct URL components. (Ilia)</li>
<li>Added optional parameter to http_build_query() to allow specification of string separator. (Ilia)</li>
<li>Added image_type_to_extension() function. (Hannes, Ilia)</li>
<li>Added allow_url_include ini directive to complement allow_url_fopen. (Rasmus)</li>
<li>Added automatic module globals management. (Dmitry)</li>
<li>Added RFC2397 (data: stream) support. (Marcus)</li>
<li>Added new error mode E_RECOVERABLE_ERROR. (Derick, Marcus, Tony)</li>
<li>Added support for getenv() input filtering. (Rasmus)</li>
<li>Added support for constructors in interfaces to force constructor signature checks in implementations. (Marcus)</li>
<li>Added memory_get_peak_usage() function for retrieving peak memory usage of a PHP script. (Ilia)</li>
<li>Added pg_field_table() function. (Edin)</li>
<li>Added SimpleXMLElement::saveXML() as an alias for SimpleXMLElement::asXML(). (Hannes)</li>
<li>Added DOMNode::getNodePath() for getting an XPath for a node. (Christian)</li>
<li>Added gmp_nextprime() function. (ants dot aasma at gmail dot com, Tony)</li>
<li>Added error_get_last() function. (Mike)</li>
<li>Removed current working directory from the php.ini search path for CLI and re-added it for other SAPIs (restore to pre 5.1.x behavior). (Edin)</li>
<li>Moved extensions to PECL:
<ul>
<li>ext/filepro (Derick, Tony)</li>
<li>ext/hwapi (Derick, Tony)</li>
</ul>
</li>
<li>Disabled CURLOPT_FOLLOWLOCATION in curl when open_basedir or safe_mode are enabled. (Stefan E., Ilia)</li>
<li>Increased default memory limit to 16 megabytes to accommodate for a more accurate memory utilization measurement.</li>
<li>In addition to path to php.ini, PHPRC now may specify full file name. (Dmitry)</li>
<li>Optimized array/HashTable copying. (Matt Wilmas, Dmitry)</li>
<li>Optimized zend_try/zend_catch macros by eliminating memcpy(3). (Dmitry)</li>
<li>Optimized require_once() and include_once() by eliminating fopen(3) on second usage. (Dmitry)</li>
<li>Optimized request shutdown sequence. Restoring ini directives now iterates only over modified directives instead of all. (Dmitry)</li>
<li>Changed priority of PHPRC environment variable on win32 to be higher then value from registry. (Dmitry)</li>
<li>Changed __toString() to be called wherever applicable. (Marcus)</li>
<li>Changed E_ALL error reporting mode to include E_RECOVERABLE_ERROR. (Marcus)</li>
<li>Changed realpath cache to be disabled when &#8220;open_basedir&#8221; or &#8220;safe_mode&#8221; are enabled on per-request basis. (Ilia)</li>
<li>Improved SNMP extension: (Jani)
<ul>
<li>Renamed snmp_set_oid_numeric_print() to snmp_set_oid_output_format().</li>
<li>Added 2 new constants: SNMP_OID_OUTPUT_FULL and SNMP_OID_OUTPUT_NUMERIC</li>
<li>Fixed bug <a href="http://bugs.php.net/37564">#37564</a> (AES privacy encryption not possible due to net-snmp 5.2 compatibility issue). (Patch: scott dot moynes+php at gmail dot com)</li>
</ul>
</li>
<li>Improved OpenSSL extension: (Pierre)
<ul>
<li>Added support for all supported algorithms in openssl_verify</li>
<li>Added openssl_pkey_get_details, returns the details of a key</li>
<li>Added x509 v3 extensions support</li>
<li>Added openssl_csr_get_subject() and openssl_csr_get_public_key()</li>
<li>Added 3 new constants OPENSSL_VERSION_TEXT and OPENSSL_VERSION_NUMBER and OPENSSL_KEYTYPE_EC</li>
</ul>
</li>
<li>Improved the Zend memory manager: (Dmitry)
<ul>
<li>Removed unnecessary &#8220;&#8211;disable-zend-memory-manager&#8221; configure option.</li>
<li>Added &#8220;&#8211;enable-malloc-mm&#8221; configure option which is enabled by default in debug builds to allow using internal and external memory debuggers.</li>
<li>Allow tweaking the memory manager with ZEND_MM_MEM_TYPE and ZEND_MM_SEG_SIZE  environment variables.</li>
<li>For more information: Zend/README.ZEND_MM</li>
</ul>
</li>
<li>Improved safe_mode check for the error_log() function. (Ilia)</li>
<li>Improved the error reporting in SOAP extension on request failure. (Ilia)</li>
<li>Improved crypt() on win32 to be about 10 times faster and to have friendlier license. (Frank, Dmitry)</li>
<li>Improved performance of the implode() function on associated arrays. (Ilia)</li>
<li>Improved performance of str_replace() when doing 1 char to 1 char or 1 char to many chars replacement. (Ilia)</li>
<li>Improved apache2filter SAPI:
<ul>
<li>Allowed PHP to be an arbitrary filter in the chain and read the script from the Apache stream. (John)</li>
<li>Added support for apache2filter in the Windows build including binary support for both Apache 2.0.x (php5apache2_filter.dll) and Apache 2.2.x (php5apache2_2_filter.dll). (Edin)</li>
</ul>
</li>
<li>Improved apache2handler SAPI:
<ul>
<li>Changed ap_set_content_type() to be called only once. (Mike)</li>
<li>Added support for Apache 2.2 handler in the Windows distribution. (Edin)</li>
</ul>
</li>
<li>Improved FastCGI SAPI: (Dmitry)
<ul>
<li>Removed source compatibility with libfcgi.</li>
<li>Optimized access to FastCGI environment variables by using HashTable instead of linear search.</li>
<li>Allowed PHP_FCGI_MAX_REQUESTS=0 that assumes no limit.</li>
<li>Allowed PHP_FCGI_CHILDREN=0 that assumes no worker children. (FastCGI requests are handled by main process itself)</li>
</ul>
</li>
<li>Improved CURL:
<ul>
<li>Added control character checks for &#8220;open_basedir&#8221; and &#8220;safe_mode&#8221; checks. (Ilia)</li>
<li>Added implementation of curl_multi_info_read(). (Brian)</li>
</ul>
</li>
<li>Improved PCRE: (Andrei)
<ul>
<li>Added run-time configurable backtracking/recursion limits.</li>
<li>Added preg_last_error(). (Andrei)</li>
</ul>
</li>
<li>Improved PDO:
<ul>
<li>Added new attribute ATTR_DEFAULT_FETCH_MODE. (Pierre)</li>
<li>Added FETCH_PROPS_LATE. (Marcus)</li>
</ul>
</li>
<li>Improved SPL: (Marcus)
<ul>
<li>Made most iterator code exception safe.</li>
<li>Added RegExIterator and RecursiveRegExIterator.</li>
<li>Added full caching support and ArrayAccess to CachingIterator.</li>
<li>Added array functions to ArrayObject/ArrayIterator and made them faster.</li>
<li>Added support for reading csv and skipping empty lines in SplFileObject.</li>
<li>Added CachingIterator::TOSTRING_USE_INNER, calls inner iterator __toString.</li>
<li>Added ability to set the CSV separator per SplFileObject.</li>
</ul>
</li>
<li>Improved xmlReader: (Rob)
<ul>
<li>Added readInnerXml(), xmlReader::setSchema().</li>
<li>Added readInnerXML(), readOuterXML(), readString(), setSchema(). (2.6.20+)</li>
<li>Changed to passing libxml options when loading reader.</li>
</ul>
</li>
<li>Fixed invalid read in imagecreatefrompng when an empty file is given (Pierre, Tony)</li>
<li>Fixed infinite loop when a wrong color index is given to imagefill (Pierre)</li>
<li>Fixed mess with CGI/CLI -d option (now it works with cgi; constants are working exactly like in php.ini; with FastCGI -d affects all requests). (Dmitry)</li>
<li>Fixed missing open_basedir check inside chdir() function. (Ilia)</li>
<li>Fixed overflow on 64bit systems in str_repeat() and wordwrap(). (Stefan E.)</li>
<li>Fixed XSLTProcessor::importStylesheet() to return TRUE on success (Christian)</li>
<li>Fixed leaks in openssl_csr_sign and openssl_csr_new (Pierre)</li>
<li>Fixed phpinfo() cutoff of variables at . (Ilia)</li>
<li>Fixed a bug in the filter extension that prevented magic_quotes_gpc from being applied when RAW filter is used. (Ilia)</li>
<li>Fixed memory leaks in openssl streams context options. (Pierre)</li>
<li>Fixed handling of extremely long paths inside tempnam() function. (Ilia)</li>
<li>Fixed bug <a href="http://bugs.php.net/39304">#39304</a> Segmentation fault with list unpacking of string offset). (Dmitry)</li>
<li>Fixed bug <a href="http://bugs.php.net/39192">#39192</a> Not including nsapi.h properly with SJSWS 7). This will make PHP 5.2 compatible to new Sun Webserver. (Uwe)</li>
<li>Fixed bug <a href="http://bugs.php.net/39140">#39140</a> Uncaught exception may cause crash). (Dmitry)</li>
<li>Fixed bug <a href="http://bugs.php.net/39125">#39125</a> Memleak when reflecting non-existing class/method). (Tony)</li>
<li>Fixed bug <a href="http://bugs.php.net/39067">#39067</a> getDeclaringClass() and private properties). (Tony)</li>
<li>Fixed bug <a href="http://bugs.php.net/39039">#39039</a> SSL: fatal protocol error when fetching HTTPS from servers running Google web server). (Ilia)</li>
<li>Fixed bug <a href="http://bugs.php.net/39035">#39035</a> Compatibility issue between DOM and  zend.ze1_compatibility_mode). (Rob)</li>
<li>Fixed bug <a href="http://bugs.php.net/39034">#39034</a> curl_exec() with return transfer returns TRUE on empty files). (Ilia)</li>
<li>Fixed bug <a href="http://bugs.php.net/39032">#39032</a> strcspn() stops on null character). (Tony)</li>
<li>Fixed bug <a href="http://bugs.php.net/39020">#39020</a> PHP in FastCGI server mode crashes). (Dmitry)</li>
<li>Fixed bug <a href="http://bugs.php.net/39017">#39017</a> foreach(($obj = new myClass) as $v); echo $obj; segfaults). (Dmitry)</li>
<li>Fixed bug <a href="http://bugs.php.net/39004">#39004</a> Fixed generation of config.nice with autoconf 2.60). (Ilia)</li>
<li>Fixed bug <a href="http://bugs.php.net/39003">#39003</a> __autoload() is called for type hinting). (Dmitry, Tony)</li>
<li>Fixed bug <a href="http://bugs.php.net/39001">#39001</a> ReflectionProperty returns incorrect declaring class for  protected properties). (Tony)</li>
<li>Fixed bug <a href="http://bugs.php.net/38996">#38996</a> PDO_MYSQL doesn&#8217;t check connections for liveness). (Tony)</li>
<li>Fixed bug <a href="http://bugs.php.net/38993">#38993</a> Fixed safe_mode/open_basedir checks for session.save_path, allowing them to account for extra parameters). (Ilia)</li>
<li>Fixed bug <a href="http://bugs.php.net/38989">#38989</a> Absolute path with slash at beginning doesn&#8217;t work on win). (Dmitry)</li>
<li>Fixed bug <a href="http://bugs.php.net/38985">#38985</a> Can&#8217;t cast COM objects). (Wez)</li>
<li>Fixed bug <a href="http://bugs.php.net/38981">#38981</a> using FTP URLs in get_headers() causes crash). (Tony)</li>
<li>Fixed bug <a href="http://bugs.php.net/38963">#38963</a> Fixed a possible open_basedir bypass in tempnam()). (Ilia)</li>
<li>Fixed bug <a href="http://bugs.php.net/38961">#38961</a> metaphone() results in segmentation fault on NetBSD).  (Tony)</li>
<li>Fixed bug <a href="http://bugs.php.net/38949">#38949</a> Cannot get xmlns value attribute). (Rob)</li>
<li>Fixed bug <a href="http://bugs.php.net/38942">#38942</a> Double old-style-ctor inheritance). (Dmitry)</li>
<li>Fixed bug <a href="http://bugs.php.net/38941">#38941</a> imap extension does not compile against new version of the imap library). (Ilia)</li>
<li>Fixed bug <a href="http://bugs.php.net/38934">#38934</a> move_uploaded_file() cannot read uploaded file outside of open_basedir). (Ilia)</li>
<li>Fixed bug <a href="http://bugs.php.net/38904">#38904</a> apache2filter changes cwd to /). (Ilia, Hannes)</li>
<li>Fixed bug <a href="http://bugs.php.net/38891">#38891</a> get_headers() do not work with curl-wrappers). (Ilia)</li>
<li>Fixed bug <a href="http://bugs.php.net/38882">#38882</a> ldap_connect causes segfault with newer versions of OpenLDAP). (Tony)</li>
<li>Fixed bug <a href="http://bugs.php.net/38859">#38859</a> parse_url() fails if passing &#8216;@&#8217; in passwd). (Tony)</li>
<li>Fixed bug <a href="http://bugs.php.net/38850">#38850</a> lookupNamespaceURI doesn&#8217;t return default namespace). (Rob)</li>
<li>Fixed bug <a href="http://bugs.php.net/38844">#38844</a> curl_easy_strerror() is defined only since cURL 7.12.0). (Tony)</li>
<li>Fixed bug <a href="http://bugs.php.net/38813">#38813</a> DOMEntityReference-&gt;__construct crashes when called  explicitly). (Rob)</li>
<li>Fixed bug <a href="http://bugs.php.net/38808">#38808</a> &#8220;maybe ref&#8221; issue for current() and others). (Dmitry)</li>
<li>Fixed bug <a href="http://bugs.php.net/38779">#38779</a> engine crashes when require()&#8217;ing file with syntax error  through userspace stream wrapper). (Tony, Dmitry)</li>
<li>Fixed bug <a href="http://bugs.php.net/38772">#38772</a> inconsistent overriding of methods in different visibility contexts). (Dmitry)</li>
<li>Fixed bug <a href="http://bugs.php.net/38759">#38759</a> PDO sqlite2 empty query causes segfault). (Tony)</li>
<li>Fixed bug <a href="http://bugs.php.net/38721">#38721</a> Invalid memory read in date_parse()). (Tony, Derick)</li>
<li>Fixed bug <a href="http://bugs.php.net/38700">#38700</a> SoapClient::__getTypes never returns). (Dmitry)</li>
<li>Fixed bug <a href="http://bugs.php.net/38693">#38693</a> curl_multi_add_handle() set curl handle to null). (Ilia)</li>
<li>Fixed bug <a href="http://bugs.php.net/38687">#38687</a> sockaddr local storage insufficient for all sock families). (Sara)</li>
<li>Fixed bug <a href="http://bugs.php.net/38661">#38661</a> mixed-case URL breaks url-wrappers). (Ilia)</li>
<li>Fixed bug <a href="http://bugs.php.net/38653">#38653</a> memory leak in ReflectionClass::getConstant()). (Tony)</li>
<li>Fixed bug <a href="http://bugs.php.net/38649">#38649</a> uninit&#8217;d optional arg in stream_socket_sendto()). (Sara)</li>
<li>Fixed bug <a href="http://bugs.php.net/38637">#38637</a> curl_copy_handle() fails to fully copy the cURL handle). (Tony, Ilia)</li>
<li>Fixed bug <a href="http://bugs.php.net/38624">#38624</a> Strange warning when incrementing an object property and  exception is thrown from __get method). (Tony)</li>
<li>Fixed bug <a href="http://bugs.php.net/38623">#38623</a> leaks in a tricky code with switch() and exceptions). (Dmitry)</li>
<li>Fixed bug <a href="http://bugs.php.net/38579">#38579</a> include_once() may include the same file twice). (Dmitry)</li>
<li>Fixed bug <a href="http://bugs.php.net/38574">#38574</a> missing curl constants and improper constant detection). (Ilia)</li>
<li>Fixed bug <a href="http://bugs.php.net/38543">#38543</a> shutdown_executor() may segfault when memory_limit is too low). (Dmitry)</li>
<li>Fixed bug <a href="http://bugs.php.net/38535">#38535</a> memory corruption in pdo_pgsql driver on error retrieval inside a failed query executed via query() method). (Ilia)</li>
<li>Fixed bug <a href="http://bugs.php.net/38534">#38534</a> segfault when calling setlocale() in userspace session  handler). (Tony)</li>
<li>Fixed bug <a href="http://bugs.php.net/38524">#38524</a> strptime() does not initialize the internal date storage structure). (Ilia)</li>
<li>Fixed bugs <a href="http://bugs.php.net/38511">#38511</a>, <a href="http://bugs.php.net/38473">#38473</a>, <a href="http://bugs.php.net/38263">#38263</a> (Fixed session extension request shutdown order to ensure it is shutdown before the extensions it may depend on). (Ilia)</li>
<li>Fixed bug <a href="http://bugs.php.net/38488">#38488</a> Access to &#8220;php://stdin&#8221; and family crashes PHP on win32). (Dmitry)</li>
<li>Fixed bug <a href="http://bugs.php.net/38474">#38474</a> getAttribute select attribute by order, even when  prefixed). (Rob)</li>
<li>Fixed bug <a href="http://bugs.php.net/38467">#38467</a> &#8211;enable-versioning causes make fail on OS X). (Tony)</li>
<li>Fixed bug <a href="http://bugs.php.net/38465">#38465</a> ReflectionParameter fails if default value is an access to self::). (Johannes)</li>
<li>Fixed bug <a href="http://bugs.php.net/38464">#38464</a> array_count_values() mishandles numeric strings).  (Matt Wilmas, Ilia)</li>
<li>Fixed bug <a href="http://bugs.php.net/38461">#38461</a> setting private attribute with __set() produces  segfault). (Tony)</li>
<li>Fixed bug <a href="http://bugs.php.net/38458">#38458</a> PECL bug #8944, PECL bug #7775 (error retrieving columns after long/text columns with PDO_ODBC). (Wez)</li>
<li>Fixed bug <a href="http://bugs.php.net/38454">#38454</a> warning upon disabling handler via  xml_set_element_handler). (dtorop933 at gmail dot com, Rob)</li>
<li>Fixed bug <a href="http://bugs.php.net/38451">#38451</a> PDO_MYSQL doesn&#8217;t compile on Solaris). (Tony)</li>
<li>Fixed bug <a href="http://bugs.php.net/38450">#38450</a> constructor is not called for classes used in userspace  stream wrappers). (Tony)</li>
<li>Fixed bug <a href="http://bugs.php.net/38438">#38438</a> DOMNodeList-&gt;item(0) segfault on empty NodeList). (Ilia)</li>
<li>Fixed bug <a href="http://bugs.php.net/38431">#38431</a> xmlrpc_get_type() crashes PHP on objects). (Tony)</li>
<li>Fixed bug <a href="http://bugs.php.net/38427">#38427</a> unicode causes xml_parser to misbehave). (Rob)</li>
<li>Fixed bug <a href="http://bugs.php.net/38424">#38424</a> Different attribute assignment if new or existing). (Rob)</li>
<li>Fixed bug <a href="http://bugs.php.net/38400">#38400</a> Use of com.typelib_file may cause a crash). (Ilia)</li>
<li>Fixed bug <a href="http://bugs.php.net/38394">#38394</a> PDO fails to recover from failed prepared statement execution). (Ilia)</li>
<li>Fixed bug <a href="http://bugs.php.net/38377">#38377</a> session_destroy() gives warning after session_regenerate_id()). (Ilia)</li>
<li>Fixed bug <a href="http://bugs.php.net/38357">#38357</a> dbase_open can&#8217;t open DBase 3 dbf file). (rodrigo at fabricadeideias dot com, Mike)</li>
<li>Fixed bug <a href="http://bugs.php.net/38354">#38354</a> Unwanted reformatting of XML when using AsXML). (Christian)</li>
<li>Fixed bug <a href="http://bugs.php.net/38347">#38347</a> Segmentation fault when using foreach with an unknown/empty  SimpleXMLElement). (Tony)</li>
<li>Fixed bug <a href="http://bugs.php.net/38322">#38322</a> reading past array in sscanf() leads to arbitrary code  execution). (Tony)</li>
<li>Fixed bug <a href="http://bugs.php.net/38315">#38315</a> Constructing in the destructor causes weird behavior). (Dmitry)</li>
<li>Fixed bug <a href="http://bugs.php.net/38303">#38303</a> spl_autoload_register() suppress all errors silently). (Ilia)</li>
<li>Fixed bug <a href="http://bugs.php.net/38290">#38290</a> configure script ignores &#8211;without-cdb,inifile,flatfile). (Marcus)</li>
<li>Fixed bug <a href="http://bugs.php.net/38289">#38289</a> segfault in session_decode() when _SESSION is NULL).  (Tony)</li>
<li>Fixed bug <a href="http://bugs.php.net/38287">#38287</a> static variables mess up global vars). (Dmitry)</li>
<li>Fixed bug <a href="http://bugs.php.net/38278">#38278</a> session_cache_expire()&#8217;s value does not match phpinfo&#8217;s  session.cache_expire). (Tony)</li>
<li>Fixed bug <a href="http://bugs.php.net/38276">#38276</a> file_exists() works incorrectly with long filenames  on Windows). (Ilia, Tony)</li>
<li>Fixed bug <a href="http://bugs.php.net/38269">#38269</a> fopen wrapper doesn&#8217;t fail on invalid hostname with  curlwrappers enabled). (Tony)</li>
<li>Fixed bug <a href="http://bugs.php.net/38265">#38265</a> heap corruption). (Dmitry)</li>
<li>Fixed bug <a href="http://bugs.php.net/38261">#38261</a> openssl_x509_parse() leaks with invalid cert) (Pierre)</li>
<li>Fixed bug <a href="http://bugs.php.net/38255">#38255</a> openssl possible leaks while passing keys) (Pierre)</li>
<li>Fixed bug <a href="http://bugs.php.net/38253">#38253</a> PDO produces segfault with default fetch mode). (Tony)</li>
<li>Fixed bug <a href="http://bugs.php.net/38251">#38251</a> socket_select() and invalid arguments). (Tony)</li>
<li>Fixed bug <a href="http://bugs.php.net/38236">#38236</a> Binary data gets corrupted on multipart/formdata POST). (Ilia)</li>
<li>Fixed bug <a href="http://bugs.php.net/38234">#38234</a> Exception in __clone makes memory leak). (Dmitry, Nuno)</li>
<li>Fixed bug <a href="http://bugs.php.net/38229">#38229</a> strtotime() does not parse YYYY-MM format). (Ilia)</li>
<li>Fixed bug <a href="http://bugs.php.net/38224">#38224</a> session extension can&#8217;t handle broken cookies). (Ilia)</li>
<li>Fixed bug <a href="http://bugs.php.net/38220">#38220</a> Crash on some object operations). (Dmitry)</li>
<li>Fixed bug <a href="http://bugs.php.net/38217">#38217</a> ReflectionClass::newInstanceArgs() tries to allocate too  much memory). (Tony)</li>
<li>Fixed bug <a href="http://bugs.php.net/38214">#38214</a> gif interlace output cannot work). (Pierre)</li>
<li>Fixed bugs <a href="http://bugs.php.net/38213">#38213</a>, <a href="http://bugs.php.net/37611">#37611</a>, <a href="http://bugs.php.net/37571">#37571</a> (wddx encoding fails to handle certain  characters). (Ilia)</li>
<li>Fixed bug <a href="http://bugs.php.net/38212">#38212</a> Segfault on invalid imagecreatefromgd2part() parameters). (Pierre)</li>
<li>Fixed bug <a href="http://bugs.php.net/38211">#38211</a> variable name and cookie name match breaks script execution). (Dmitry)</li>
<li>Fixed bug <a href="http://bugs.php.net/38199">#38199</a> fclose() unable to close STDOUT and STDERR). (Tony)</li>
<li>Fixed bug <a href="http://bugs.php.net/38198">#38198</a> possible crash when COM reports an exception). (Ilia)</li>
<li>Fixed bug <a href="http://bugs.php.net/38194">#38194</a> ReflectionClass::isSubclassOf() returns TRUE for the class itself). (Ilia)</li>
<li>Fixed bug <a href="http://bugs.php.net/38183">#38183</a> disable_classes=Foobar causes disabled class to be called Foo). (Jani)</li>
<li>Fixed bug <a href="http://bugs.php.net/38179">#38179</a> imagecopy from a palette to a truecolor image loose alpha channel) (Pierre)</li>
<li>Fixed bug <a href="http://bugs.php.net/38173">#38173</a> Freeing nested cursors causes OCI8 to segfault). (Tony)</li>
<li>Fixed bug <a href="http://bugs.php.net/38168">#38168</a> Crash in pdo_pgsql on missing bound parameters). (Ilia)</li>
<li>Fixed bug <a href="http://bugs.php.net/38161">#38161</a> oci_bind_by_name() returns garbage when Oracle didn&#8217;t set  the variable). (Tony)</li>
<li>Fixed bug <a href="http://bugs.php.net/38146">#38146</a> Cannot use array returned from foo::__get(&#8216;bar&#8217;) in write context). (Dmitry)</li>
<li>Fixed bug <a href="http://bugs.php.net/38132">#38132</a> ReflectionClass::getStaticProperties() retains  in key names). (Ilia)</li>
<li>Fixed bug <a href="http://bugs.php.net/38125">#38125</a> undefined reference to spl_dual_it_free_storage). (Marcus)</li>
<li>Fixed bug <a href="http://bugs.php.net/38112">#38112</a> corrupted gif segfaults) (Pierre)</li>
<li>Fixed bug <a href="http://bugs.php.net/38096">#38096</a> large timeout values ignored on 32bit machines in stream_socket_accept() and stream_socket_client()). (Ilia)</li>
<li>Fixed bug <a href="http://bugs.php.net/38086">#38086</a> stream_copy_to_stream() returns 0 when maxlen is bigger  than the actual length). (Tony)</li>
<li>Fixed bug <a href="http://bugs.php.net/38072">#38072</a> boolean arg for mysqli_autocommit() is always true on  Solaris). (Tony)</li>
<li>Fixed bug <a href="http://bugs.php.net/38067">#38067</a> Parameters are not decoded from utf-8 when using encoding option). (Dmitry)</li>
<li>Fixed bug <a href="http://bugs.php.net/38064">#38064</a> ignored constructor visibility). (Marcus)</li>
<li>Fixed bug <a href="http://bugs.php.net/38055">#38055</a> Wrong interpretation of boolean parameters). (Dmitry)</li>
<li>Fixed bug <a href="http://bugs.php.net/38047">#38047</a> &#8220;file&#8221; and &#8220;line&#8221; sometimes not set in backtrace from inside error handler). (Dmitry)</li>
<li>Fixed bug <a href="http://bugs.php.net/38019">#38019</a> segfault extending mysqli class). (Dmitry)</li>
<li>Fixed bug <a href="http://bugs.php.net/38005">#38005</a> SoapFault faultstring doesn&#8217;t follow encoding rules). (Dmitry)</li>
<li>Fixed bug <a href="http://bugs.php.net/38004">#38004</a> Parameters in SoapServer are decoded twice). (Dmitry)</li>
<li>Fixed bug <a href="http://bugs.php.net/38003">#38003</a> in classes inherited from MySQLi it&#8217;s possible to call  private constructors from invalid context). (Tony)</li>
<li>Fixed bug <a href="http://bugs.php.net/37987">#37987</a> invalid return of file_exists() in safe mode). (Ilia)</li>
<li>Fixed bug <a href="http://bugs.php.net/37947">#37947</a> zend_ptr_stack reallocation problem). (Dmitry)</li>
<li>Fixed bug <a href="http://bugs.php.net/37945">#37945</a> pathinfo() cannot handle argument with special characters like German &#8220;Umlaut&#8221;). (Mike)</li>
<li>Fixed bug <a href="http://bugs.php.net/37931">#37931</a> possible crash in OCI8 after database restart  when using persistent connections). (Tony)</li>
<li>Fixed bug <a href="http://bugs.php.net/37923">#37923</a> Display constant value in reflection::export). (Johannes)</li>
<li>Fixed bug <a href="http://bugs.php.net/37920">#37920</a> compilation problems on z/OS). (Tony)</li>
<li>Fixed bug <a href="http://bugs.php.net/37870">#37870</a> pgo_pgsql tries to de-allocate unused statements). (Ilia, ce at netage dot bg)</li>
<li>Fixed bug <a href="http://bugs.php.net/37864">#37864</a> file_get_contents() leaks on empty file). (Hannes)</li>
<li>Fixed bug <a href="http://bugs.php.net/37862">#37862</a> Integer pointer comparison to numeric value). (bugs-php at thewrittenword dot com)</li>
<li>Fixed bug <a href="http://bugs.php.net/37846">#37846</a> wordwrap() wraps incorrectly). (ddk at krasn dot ru, Tony)</li>
<li>Fixed bug <a href="http://bugs.php.net/37816">#37816</a> ReflectionProperty does not throw exception when accessing protected attribute). (Marcus)</li>
<li>Fixed bug <a href="http://bugs.php.net/37811">#37811</a> define not using toString on objects). (Marcus)</li>
<li>Fixed bug <a href="http://bugs.php.net/37807">#37807</a> segmentation fault during SOAP schema import). (Tony)</li>
<li>Fixed bug <a href="http://bugs.php.net/37806">#37806</a> weird behavior of object type and comparison). (Marcus)</li>
<li>Fixed bug <a href="http://bugs.php.net/37780">#37780</a> memory leak trying to execute a non existing file (CLI)). (Mike)</li>
<li>Fixed bug <a href="http://bugs.php.net/37779">#37779</a> empty include_path leads to search for files inside /). (jr at terragate dot net, Ilia)</li>
<li>Fixed bug <a href="http://bugs.php.net/37747">#37747</a> strtotime segfaults when given &#8220;nextyear&#8221;). (Derick)</li>
<li>Fixed bug <a href="http://bugs.php.net/37720">#37720</a> merge_php_config scrambles values). (Mike, pumuckel at metropolis dot de)</li>
<li>Fixed bug <a href="http://bugs.php.net/37709">#37709</a> Possible crash in PDO::errorCode()). (Ilia)</li>
<li>Fixed bug <a href="http://bugs.php.net/37707">#37707</a> clone without assigning leaks memory). (Ilia, Nuno, Dmitri)</li>
<li>Fixed bug <a href="http://bugs.php.net/37705">#37705</a> Semaphore constants not available). (Ilia)</li>
<li>Fixed bug <a href="http://bugs.php.net/37671">#37671</a> MySQLi extension fails to recognize BIT column). (Ilia)</li>
<li>Fixed bug <a href="http://bugs.php.net/37667">#37667</a> Object is not added into array returned by __get). (Marcus)</li>
<li>Fixed bug <a href="http://bugs.php.net/37635">#37635</a> parameter of pcntl signal handler is trashed). (Mike)</li>
<li>Fixed bug <a href="http://bugs.php.net/37632">#37632</a> Protected method access problem). (Marcus)</li>
<li>Fixed bug <a href="http://bugs.php.net/37630">#37630</a> MySQL extensions should link against thread safe client libs if built with ZTS). (Mike)</li>
<li>Fixed bug <a href="http://bugs.php.net/37620">#37620</a> mysqli_ssl_set validation is inappropriate). (Georg)</li>
<li>Fixed bug <a href="http://bugs.php.net/37616">#37616</a> DATE_RFC822 does not product RFC 822 dates). (Hannes Magnusson, Derick)</li>
<li>Fixed bug <a href="http://bugs.php.net/37614">#37614</a> Class name lowercased in error message). (Johannes)</li>
<li>Fixed bug <a href="http://bugs.php.net/37587">#37587</a> var without attribute causes segfault). (Marcus)</li>
<li>Fixed bug <a href="http://bugs.php.net/37586">#37586</a> Bumped minimum PCRE version to 6.6, needed for recursion limit support). (Ilia)</li>
<li>Fixed bug <a href="http://bugs.php.net/37581">#37581</a> oci_bind_array_by_name clobbers input array when using  SQLT_AFC, AVC). (Tony)</li>
<li>Fixed bug <a href="http://bugs.php.net/37569">#37569</a> WDDX incorrectly encodes high-ascii characters). (Ilia)</li>
<li>Fixed bug <a href="http://bugs.php.net/37565">#37565</a> Using reflection::export with simplexml causing a crash). (Marcus)</li>
<li>Fixed bug <a href="http://bugs.php.net/37564">#37564</a> AES privacy encryption not possible due to net-snmp 5.2 compatibility issue). (Jani, patch by scott dot moynes+php at gmail dot com)</li>
<li>Fixed bug <a href="http://bugs.php.net/37563">#37563</a> array_key_exists performance is poor for &amp;$array). (Ilia)</li>
<li>Fixed bug <a href="http://bugs.php.net/37558">#37558</a> timeout functionality doesn&#8217;t work after a second PHP start-up on the same thread). (p dot desarnaud at wanadoo dot fr)</li>
<li>Fixed bug <a href="http://bugs.php.net/37531">#37531</a> oci8 persistent connection corruption). (Tony)</li>
<li>Fixed bug <a href="http://bugs.php.net/37523">#37523</a> namespaces added too late, leads to missing xsi:type attributes. incompatibility with libxml2-2.6.24). (Dmitry)</li>
<li>Fixed bug <a href="http://bugs.php.net/37514">#37514</a> strtotime doesn&#8217;t assume year correctly). (Derick)</li>
<li>Fixed bug <a href="http://bugs.php.net/37510">#37510</a> session_regenerate_id changes session_id() even on  failure). (Hannes)</li>
<li>Fixed bug <a href="http://bugs.php.net/37505">#37505</a> touch() truncates large files). (Ilia)</li>
<li>Fixed bug <a href="http://bugs.php.net/37499">#37499</a> CLI segmentation faults during cleanup with sybase-ct  extension enabled). (Tony)</li>
<li>Fixed bug <a href="http://bugs.php.net/37496">#37496</a> FastCGI output buffer overrun). (Piotr, Dmitry)</li>
<li>Fixed bug <a href="http://bugs.php.net/37487">#37487</a> oci_fetch_array() array-type should always default to OCI_BOTH). (Tony)</li>
<li>Fixed bug <a href="http://bugs.php.net/37457">#37457</a> Crash when an exception is thrown in accept() method of  FilterIterator). (Marcus)</li>
<li>Fixed bug <a href="http://bugs.php.net/37456">#37456</a> DOMElement-&gt;setAttribute() loops forever). (Rob)</li>
<li>Fixed bug <a href="http://bugs.php.net/37445">#37445</a> Fixed crash in pdo_mysql resulting from premature object destruction). (Ilia)</li>
<li>Fixed bug <a href="http://bugs.php.net/37428">#37428</a> PHP crashes on windows if there are start-up errors and event log is used for logging them). (Edin)</li>
<li>Fixed bug <a href="http://bugs.php.net/37418">#37418</a> tidy module crashes on shutdown). (Tony)</li>
<li>Fixed bug <a href="http://bugs.php.net/37416">#37416</a> iterator_to_array() hides exceptions thrown in rewind() method). (Tony)</li>
<li>Fixed bug <a href="http://bugs.php.net/37413">#37413</a> Rejected versions of flex that don&#8217;t work). (Ilia)</li>
<li>Fixed bug <a href="http://bugs.php.net/37395">#37395</a> recursive mkdir() fails to create nonexistent directories  in root dir). (Tony)</li>
<li>Fixed bug <a href="http://bugs.php.net/37394">#37394</a> substr_compare() returns an error when offset equals  string length). (Ilia)</li>
<li>Fixed bug <a href="http://bugs.php.net/37392">#37392</a> Unnecessary call to OCITransRollback() at the end of  request). (Tony)</li>
<li>Fixed bug <a href="http://bugs.php.net/37376">#37376</a> fastcgi.c compile fail with gcc 2.95.4). (Ilia)</li>
<li>Fixed bug <a href="http://bugs.php.net/37368">#37368</a> Incorrect timestamp returned for strtotime()). (Derick)</li>
<li>Fixed bug <a href="http://bugs.php.net/37363">#37363</a> PDO_MYSQL does not build if no other mysql extension is enabled). (Mike)</li>
<li>Fixed bug <a href="http://bugs.php.net/37348">#37348</a> make PEAR install ignore open_basedir). (Ilia)</li>
<li>Fixed bug <a href="http://bugs.php.net/37341">#37341</a> $_SERVER in included file is shortened to two entries, if $_ENV gets used). (Dmitry)</li>
<li>Fixed bug <a href="http://bugs.php.net/37313">#37313</a> sigemptyset() used without including &lt;signal.h&gt;). (jdolecek)</li>
<li>Fixed bug <a href="http://bugs.php.net/37306">#37306</a> max_execution_time = max_input_time). (Dmitry)</li>
<li>Fixed bug <a href="http://bugs.php.net/37278">#37278</a> SOAP not respecting uri in __soapCall). (Dmitry)</li>
<li>Fixed bug <a href="http://bugs.php.net/37265">#37265</a> Added missing safe_mode &amp; open_basedir checks to imap_body()). (Ilia)</li>
<li>Fixed bug <a href="http://bugs.php.net/37262">#37262</a> var_export() does not escape  character). (Ilia)</li>
<li>Fixed bug <a href="http://bugs.php.net/37256">#37256</a> php-fastcgi doesn&#8217;t handle connection abort). (Dmitry)</li>
<li>Fixed bug <a href="http://bugs.php.net/37244">#37244</a> Added strict flag to base64_decode() that enforces  RFC3548 compliance). (Ilia)</li>
<li>Fixed bug <a href="http://bugs.php.net/37144">#37144</a> PHP crashes trying to assign into property of dead object). (Dmitry)</li>
<li>Fixed bug <a href="http://bugs.php.net/36949">#36949</a> invalid internal mysqli objects dtor). (Mike)</li>
<li>Fixed bug <a href="http://bugs.php.net/36732">#36732</a> req/x509 extensions support for openssl_csr_new and openssl_csr_sign) (ben at psc dot edu, Pierre)</li>
<li>Fixed bug <a href="http://bugs.php.net/36759">#36759</a> Objects destructors are invoked in wrong order when script is finished). (Dmitry)</li>
<li>Fixed bug <a href="http://bugs.php.net/36681">#36681</a> pdo_pgsql driver incorrectly ignored some errors). (Wez, Ilia)</li>
<li>Fixed bug <a href="http://bugs.php.net/36630">#36630</a> umask not reset at the end of the request). (Ilia)</li>
<li>Fixed bug <a href="http://bugs.php.net/36515">#36515</a> Unlinking buckets from non-existent brigades). (Sara)</li>
<li>Fixed bug <a href="http://bugs.php.net/35973">#35973</a> Error ORA-24806 occurs when trying to fetch a NCLOB  field). (Tony)</li>
<li>Fixed bug <a href="http://bugs.php.net/35886">#35886</a> file_get_contents() fails with some combinations of offset &amp; maxlen). (Nuno)</li>
<li>Fixed bug <a href="http://bugs.php.net/35512">#35512</a> Lack of read permission on main script results in  E_WARNING rather then E_ERROR). (Ilia)</li>
<li>Fixed bug <a href="http://bugs.php.net/34180">#34180</a> &#8211;with-curlwrappers causes PHP to disregard some HTTP  stream context options). (Mike)</li>
<li>Fixed bug <a href="http://bugs.php.net/34066">#34066</a> recursive array_walk causes segfault). (Tony)</li>
<li>Fixed bug <a href="http://bugs.php.net/34065">#34065</a> throw in foreach causes memory leaks). (Dmitry)</li>
<li>Fixed bug <a href="http://bugs.php.net/34005">#34005</a> oci_password_change() fails). (pholdaway at technocom-wireless dot com, Tony)</li>
<li>Fixed bug <a href="http://bugs.php.net/33895">#33895</a> Missing math constants). (Hannes)</li>
<li>Fixed bug <a href="http://bugs.php.net/33770">#33770</a> https:// or ftps:// do not work when &#8211;with-curlwrappers  is used and ssl certificate is not verifiable). (Ilia)</li>
<li>Fixed bug <a href="http://bugs.php.net/29538">#29538</a> number_format and problem with 0). (Matt Wilmas)</li>
<li>Fixed bug <a href="http://bugs.php.net/28382">#28382</a> openssl_x509_parse() extensions support) (Pierre)</li>
<li>Fixed PECL bug #9061 (oci8 might reuse wrong persistent connection). (Tony)</li>
<li>Fixed PECL bug #8816 (issue in php_oci_statement_fetch with more than one  piecewise column) (jeff at badtz-maru dot com, Tony)</li>
<li>Fixed PECL bug #8112 (OCI8 persistent connections misbehave when Apache  process times out). (Tony)</li>
<li>Fixed PECL bug #7755 (error selecting DOUBLE fields with PDO_ODBC). (&#8220;slaws&#8221;, Wez)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.sfx.lv/2007/02/php-520-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

