<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-33088939</id><updated>2024-08-30T15:24:06.504+03:00</updated><category term="imdb"/><title type='text'>PHP Tunes</title><subtitle type='html'>PHP tips, tricks and things</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://phptunes.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33088939/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://phptunes.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Snick</name><uri>http://www.blogger.com/profile/02589164989077217519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/blogger/1828/3628/320/me.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>8</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-33088939.post-6694367065505248038</id><published>2010-08-27T22:10:00.004+04:00</published><updated>2010-08-27T22:27:33.610+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="imdb"/><title type='text'>Brand new service - a live image widget with actual IMDB rating</title><content type='html'>We all use torrents to download movies and so on. The best rating for the movies is &lt;a href=&quot;http://www.imdb.com&quot;&gt;IMDb.com&lt;/a&gt;, but torrent releasers copying an IMDb rating at the moment of the post. Often issue is rating has been changed after posting (when you&#39;re looking for a movie to download).&lt;br /&gt;&lt;br /&gt;So, I create a service to make rating in post actual. The thing is pretty simple - service will re-check movie rating on IMDb periodically and change it if needed.&lt;br /&gt;&lt;br /&gt;Check this out: &lt;a href=&quot;http://imdb.snick.ru&quot;&gt;http://imdb.snick.ru&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;To find or add movie you should follow a few steps:&lt;br /&gt;1. Find a movie on IMDB.com&lt;br /&gt;2. Paste link of a movie to a search field on imdb.snick.ru frontpage&lt;br /&gt;3. Examine rating and use one of export options&lt;br /&gt;&lt;br /&gt;Example for a &quot;Machete&quot; (2010) movie: &lt;a href=&quot;http://imdb.snick.ru/movie/tt0985694&quot; target=&quot;_blank&quot;&gt;&lt;img class=&quot;imdb_informer&quot; title=&quot;Actual IMDB rating for Machete 2010&quot; src=&quot;http://imdb.snick.ru/ratefor/tt0985694.png&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://phptunes.blogspot.com/feeds/6694367065505248038/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/33088939/6694367065505248038' title='Комментарии: 12'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33088939/posts/default/6694367065505248038'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33088939/posts/default/6694367065505248038'/><link rel='alternate' type='text/html' href='http://phptunes.blogspot.com/2010/08/brand-new-service-live-image-widget.html' title='Brand new service - a live image widget with actual IMDB rating'/><author><name>Snick</name><uri>http://www.blogger.com/profile/02589164989077217519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/blogger/1828/3628/320/me.jpg'/></author><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33088939.post-5060061146232348746</id><published>2009-10-07T22:22:00.002+04:00</published><updated>2009-10-07T22:39:03.491+04:00</updated><title type='text'>Open Petition to Adobe (FP40 issue)</title><content type='html'>This is a notes on &lt;a href=&quot;http://bugs.adobe.com/jira/browse/FP-40&quot; target=&quot;_blank&quot;&gt;Adobe Flash Player FP-40 issue&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you&#39;ll try to create simple text input field in Adobe Flash and will type non-latin characters --- you&#39;ll fail if: you&#39;re using Linux, FreeBSD, Mac OSX, some Windows (Vista too), or swf-file was published with wmode=transparent or wmode=opaque options.&lt;br /&gt;&lt;br /&gt;This is an known bug (know as FP-40). It was created two or more years ago in Adobe bugtracker.&lt;br /&gt;&lt;br /&gt;Why it not fixed? I don&#39;t know. May be Adobe don&#39;t know &lt;b&gt;how&lt;/b&gt; fix it. May be Adobe don&#39;t &lt;b&gt;want&lt;/b&gt; fix it. Who knows? Who cares?&lt;br /&gt;&lt;br /&gt;We care. We all spent many hours, day, week and months to find workaround for issue with no luck. There is no solution I seen! And many developers decide to switch to Java FX or Silverlight/Moonlight technologies. But it&#39;s impossible when you develop shared Flash application for posting in blogs, livejournal, facebook, myspace, etc - swf-embed support only.&lt;br /&gt;&lt;br /&gt;So, I&#39;ve started online petition to Adobe: &lt;a href=&quot;http://www.petitiononline.com/3YUJUPHx/petition.html&quot;&gt;http://www.petitiononline.com/3YUJUPHx/petition.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This petition helps Adobe to change priority of FP40 issue and fix it faster than few years =)&lt;br /&gt;&lt;br /&gt;If you, your friends or friend&#39;s of your friend is familiar with Flash/Flex - give link to this post, please.&lt;br /&gt;&lt;br /&gt;Thanks a lot!</content><link rel='replies' type='application/atom+xml' href='http://phptunes.blogspot.com/feeds/5060061146232348746/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/33088939/5060061146232348746' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33088939/posts/default/5060061146232348746'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33088939/posts/default/5060061146232348746'/><link rel='alternate' type='text/html' href='http://phptunes.blogspot.com/2009/10/open-petition-to-adobe-fp40-issue.html' title='Open Petition to Adobe (FP40 issue)'/><author><name>Snick</name><uri>http://www.blogger.com/profile/02589164989077217519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/blogger/1828/3628/320/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33088939.post-4064820138389695060</id><published>2009-10-07T22:00:00.002+04:00</published><updated>2009-10-07T22:14:03.044+04:00</updated><title type='text'>Открытая петиция к Adobe</title><content type='html'>Речь пойдет о баге &lt;a href=&quot;http://bugs.adobe.com/jira/browse/FP-40&quot; target=&quot;_blank&quot;&gt;FP-40&lt;/a&gt; в Adobe FlashPlayer&#39;e.&lt;br /&gt;&lt;br /&gt;Если вы попробуете создать во флеше текстовое поле и ввести в него что-то по-русски и у вас получится, значит вам повезло и в вашей версии или сборке Windows текстовое поле нормально работает. В противном случае (некоторые Windows и любой юникс, включая OSX) вы увидите &quot;персидскую вязь&quot; =)&lt;br /&gt;&lt;br /&gt;Под виндами это чаще проявляется когда флешку запускают в нестандартном режиме, который регулируется параметром wmode=transparent или wmode=opaque.&lt;br /&gt;&lt;br /&gt;В общем, давно известный баг, года два точно, а то и больше - номер бага равен 40 =) Посмотрите на текущие номера багов в трекере Adobe =)&lt;br /&gt;&lt;br /&gt;Беда в том, что Adobe либо не умеет исправлять это баг либо не хочет. Невозможность создавать на флеше кросс-платформенные приложения с текстовым вводом заставляет массу разработчиков извращаться со своими workaround&#39;ами этой проблемы либо использовать другие технологии типа Java FX, Silverlight/Moonlight.&lt;br /&gt;&lt;br /&gt;Мне это надоело и я открыл петицию к Adobe: &lt;a href=&quot;http://www.petitiononline.com/3YUJUPHx/petition.html&quot; target=&quot;_blank&quot;&gt;http://www.petitiononline.com/3YUJUPHx/petition.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Это американская система и я рассчитываю, что популярность петиции позволит Adobe ускориться в плане исправления бага. Это в наших силах.&lt;br /&gt;&lt;br /&gt;Если у вас есть знакомые flash-разработчики или они есть у ваших знакомых - покажите им эту запись. Это здорово поможет нам всем. Хватит тратить время на исправление &lt;b&gt;чужих&lt;/b&gt; ошибок.</content><link rel='replies' type='application/atom+xml' href='http://phptunes.blogspot.com/feeds/4064820138389695060/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/33088939/4064820138389695060' title='Комментарии: 5'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33088939/posts/default/4064820138389695060'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33088939/posts/default/4064820138389695060'/><link rel='alternate' type='text/html' href='http://phptunes.blogspot.com/2009/10/adobe.html' title='Открытая петиция к Adobe'/><author><name>Snick</name><uri>http://www.blogger.com/profile/02589164989077217519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/blogger/1828/3628/320/me.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33088939.post-322394110824602884</id><published>2009-02-10T02:01:00.003+03:00</published><updated>2009-02-10T02:41:18.604+03:00</updated><title type='text'>PHP Array and Object Magic</title><content type='html'>Sometimes it will be useful to convert object to array or array to object: iterate, store, modify, etc.&lt;br /&gt;&lt;br /&gt;It&#39;s simple with PHP5:&lt;br /&gt;&lt;pre style=&#39;color:#d1d1d1;background:#000000; padding: 5px;&#39;&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt;$myItem&lt;/span&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt; &lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;=&lt;/span&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt; &lt;/span&gt;&lt;span style=&#39;color:#e66170; font-weight:bold; &#39;&gt;array&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;(&lt;/span&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&lt;/span&gt;&lt;span style=&#39;color:#00c4c4; &#39;&gt;&quot;color&quot;&lt;/span&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt; &lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;=&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;&gt;&lt;/span&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt; &lt;/span&gt;&lt;span style=&#39;color:#00c4c4; &#39;&gt;&quot;black&quot;&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;,&lt;/span&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&lt;/span&gt;&lt;span style=&#39;color:#00c4c4; &#39;&gt;&quot;size&quot;&lt;/span&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt; &lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;=&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;&gt;&lt;/span&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt; &lt;/span&gt;&lt;span style=&#39;color:#00c4c4; &#39;&gt;&quot;medium&quot;&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;,&lt;/span&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&lt;/span&gt;&lt;span style=&#39;color:#00c4c4; &#39;&gt;&quot;pieces&quot;&lt;/span&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt; &lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;=&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;&gt;&lt;/span&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt; &lt;/span&gt;&lt;span style=&#39;color:#008c00; &#39;&gt;100&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;,&lt;/span&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&lt;/span&gt;&lt;span style=&#39;color:#00c4c4; &#39;&gt;&quot;cost&quot;&lt;/span&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt; &lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;=&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;&gt;&lt;/span&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt; &lt;/span&gt;&lt;span style=&#39;color:#009f00; &#39;&gt;44.99&lt;/span&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;)&lt;/span&gt;&lt;span style=&#39;color:#b060b0; &#39;&gt;;&lt;/span&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt;$myItemObject&lt;/span&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt; &lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;=&lt;/span&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt; &lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;(&lt;/span&gt;&lt;span style=&#39;color:#bb7977; &#39;&gt;object&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;)&lt;/span&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt; &lt;/span&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt;$myItem&lt;/span&gt;&lt;span style=&#39;color:#b060b0; &#39;&gt;;&lt;/span&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&#39;color:#e66170; font-weight:bold; &#39;&gt;echo&lt;/span&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt; &lt;/span&gt;&lt;span style=&#39;color:#00c4c4; &#39;&gt;&quot;Array as object:&lt;/span&gt;&lt;span style=&#39;color:#008080; &#39;&gt;\n&lt;/span&gt;&lt;span style=&#39;color:#00c4c4; &#39;&gt;&quot;&lt;/span&gt;&lt;span style=&#39;color:#b060b0; &#39;&gt;;&lt;/span&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&#39;color:#e66170; font-weight:bold; &#39;&gt;print_r&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;(&lt;/span&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt;$myItemObject&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;)&lt;/span&gt;&lt;span style=&#39;color:#b060b0; &#39;&gt;;&lt;/span&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&#39;color:#e66170; font-weight:bold; &#39;&gt;echo&lt;/span&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt; &lt;/span&gt;&lt;span style=&#39;color:#00c4c4; &#39;&gt;&quot;&lt;/span&gt;&lt;span style=&#39;color:#008080; &#39;&gt;\n&lt;/span&gt;&lt;span style=&#39;color:#00c4c4; &#39;&gt;&quot;&lt;/span&gt;&lt;span style=&#39;color:#b060b0; &#39;&gt;;&lt;/span&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt;$myItemArray&lt;/span&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt; &lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;=&lt;/span&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt; &lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;(&lt;/span&gt;&lt;span style=&#39;color:#e66170; font-weight:bold; &#39;&gt;array&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;)&lt;/span&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt; &lt;/span&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt;$myItemObject&lt;/span&gt;&lt;span style=&#39;color:#b060b0; &#39;&gt;;&lt;/span&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&#39;color:#e66170; font-weight:bold; &#39;&gt;echo&lt;/span&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt; &lt;/span&gt;&lt;span style=&#39;color:#00c4c4; &#39;&gt;&quot;Object as array:&lt;/span&gt;&lt;span style=&#39;color:#008080; &#39;&gt;\n&lt;/span&gt;&lt;span style=&#39;color:#00c4c4; &#39;&gt;&quot;&lt;/span&gt;&lt;span style=&#39;color:#b060b0; &#39;&gt;;&lt;/span&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&#39;color:#e66170; font-weight:bold; &#39;&gt;print_r&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;(&lt;/span&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt;$myItemArray&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;)&lt;/span&gt;&lt;span style=&#39;color:#b060b0; &#39;&gt;;&lt;/span&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;Output:&lt;br /&gt;&lt;pre style=&quot;background:#eeeeee; padding: 5px;&quot;&gt;Array as object:&lt;br /&gt;&lt;b&gt;stdClass Object&lt;/b&gt;&lt;br /&gt;(&lt;br /&gt;    [color] =&gt; black&lt;br /&gt;    [size] =&gt; medium&lt;br /&gt;    [pieces] =&gt; 100&lt;br /&gt;    [cost] =&gt; 44.99&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;Object as array:&lt;br /&gt;&lt;b&gt;Array&lt;/b&gt;&lt;br /&gt;(&lt;br /&gt;    [color] =&gt; black&lt;br /&gt;    [size] =&gt; medium&lt;br /&gt;    [pieces] =&gt; 100&lt;br /&gt;    [cost] =&gt; 44.99&lt;br /&gt;)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Be careful with protected and private class members:&lt;br /&gt;&lt;pre style=&#39;color:#d1d1d1;background:#000000; padding: 5px;&#39;&gt;&lt;span style=&#39;color:#e66170; font-weight:bold; &#39;&gt;class&lt;/span&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt; Casting&lt;/span&gt;&lt;br /&gt;&lt;span style=&#39;color:#b060b0; &#39;&gt;{&lt;/span&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&lt;/span&gt;&lt;span style=&#39;color:#e66170; font-weight:bold; &#39;&gt;public&lt;/span&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt; &lt;/span&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt;$pub&lt;/span&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt; &lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;=&lt;/span&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt; &lt;/span&gt;&lt;span style=&#39;color:#00c4c4; &#39;&gt;&quot;I&#39;m a public member&quot;&lt;/span&gt;&lt;span style=&#39;color:#b060b0; &#39;&gt;;&lt;/span&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&lt;/span&gt;&lt;span style=&#39;color:#e66170; font-weight:bold; &#39;&gt;protected&lt;/span&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt; &lt;/span&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt;$pro&lt;/span&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt; &lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;=&lt;/span&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt; &lt;/span&gt;&lt;span style=&#39;color:#00c4c4; &#39;&gt;&quot;I&#39;m a protected from outlanders&quot;&lt;/span&gt;&lt;span style=&#39;color:#b060b0; &#39;&gt;;&lt;/span&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&lt;/span&gt;&lt;span style=&#39;color:#e66170; font-weight:bold; &#39;&gt;private&lt;/span&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt; &lt;/span&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt;$pri&lt;/span&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt; &lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;=&lt;/span&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt; &lt;/span&gt;&lt;span style=&#39;color:#00c4c4; &#39;&gt;&quot;I&#39;m a hidden property&quot;&lt;/span&gt;&lt;span style=&#39;color:#b060b0; &#39;&gt;;&lt;/span&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&#39;color:#b060b0; &#39;&gt;}&lt;/span&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt;$casting&lt;/span&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt; &lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;=&lt;/span&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt; &lt;/span&gt;&lt;span style=&#39;color:#e66170; font-weight:bold; &#39;&gt;new&lt;/span&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt; Casting&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;(&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;)&lt;/span&gt;&lt;span style=&#39;color:#b060b0; &#39;&gt;;&lt;/span&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&#39;color:#e66170; font-weight:bold; &#39;&gt;print_r&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;(&lt;/span&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt;$casting&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;)&lt;/span&gt;&lt;span style=&#39;color:#b060b0; &#39;&gt;;&lt;/span&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&#39;color:#e66170; font-weight:bold; &#39;&gt;print_r&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;(&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;(&lt;/span&gt;&lt;span style=&#39;color:#e66170; font-weight:bold; &#39;&gt;array&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;)&lt;/span&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt; &lt;/span&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt;$casting&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;)&lt;/span&gt;&lt;span style=&#39;color:#b060b0; &#39;&gt;;&lt;/span&gt;&lt;span style=&#39;color:#ffffff; &#39;&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;Output:&lt;br /&gt;&lt;pre style=&quot;background:#eeeeee; padding: 5px;&quot;&gt;Casting Object&lt;br /&gt;(&lt;br /&gt;    [pub] =&gt; I&#39;m a public member&lt;br /&gt;    [pro:protected] =&gt; I&#39;m a protected from outlanders&lt;br /&gt;    [pri:private] =&gt; I&#39;m a hidden property&lt;br /&gt;)&lt;br /&gt;Array&lt;br /&gt;(&lt;br /&gt;    [pub] =&gt; I&#39;m a public member&lt;br /&gt;    &lt;b&gt;[*pro]&lt;/b&gt; =&gt; I&#39;m a protected from outlanders&lt;br /&gt;    &lt;b&gt;[Castingpri]&lt;/b&gt; =&gt; I&#39;m a hidden property&lt;br /&gt;)&lt;br /&gt;&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://phptunes.blogspot.com/feeds/322394110824602884/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/33088939/322394110824602884' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33088939/posts/default/322394110824602884'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33088939/posts/default/322394110824602884'/><link rel='alternate' type='text/html' href='http://phptunes.blogspot.com/2009/02/php-array-and-object-magic.html' title='PHP Array and Object Magic'/><author><name>Snick</name><uri>http://www.blogger.com/profile/02589164989077217519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/blogger/1828/3628/320/me.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33088939.post-261482391140809198</id><published>2007-07-31T19:00:00.000+04:00</published><updated>2007-07-31T21:23:44.207+04:00</updated><title type='text'>Ubuntu 7.04 (Feisty): PHP installation with MSSQL</title><content type='html'>&lt;p&gt;Ubuntu is a great Linux distribution, but MSSQL support is poor. There is nothing about MSSQL in &lt;code&gt;apt-get&lt;/code&gt; or Synaptic package manager. This small HOWTO fixes problem. See &lt;a href=&#39;http://panthar.org/2006/06/15/php-with-mssql-on-ubuntu-606/&#39; target=&#39;_blank&#39;&gt;HOWTO: PHP with MSSQL on Ubuntu 6.06&lt;/a&gt; if you are using Ubuntu 6.06 or want to try another way to reach PHP with MSSQL.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:180%;&quot;&gt;Step 1. Get the sources and packages&lt;/span&gt;&lt;br /&gt;&lt;p&gt;You must have a php5, php5-dev, php5-src and freetds.&lt;br /&gt;&lt;pre&gt;sudo apt-get install php5 php5-dev freetds&lt;br /&gt;sudo apt-get source php5&lt;/pre&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;span style=&quot;font-size:180%;&quot;&gt;Step 2. Building MSSQL module&lt;/span&gt;&lt;br /&gt;&lt;p&gt;Apt-get will unpack php5 sources into php5-5.x.x directory. Navigate to &lt;code&gt;php5-5.x.x/ext/mssql&lt;/code&gt;:&lt;br /&gt;&lt;pre&gt;sudo phpize&lt;br /&gt;sudo ./configure --with-mssql&lt;br /&gt;sudo make&lt;/pre&gt;&lt;br /&gt;After make you will see something like this:&lt;br /&gt;&lt;pre&gt;...&lt;br /&gt;Libraries have been installed in:&lt;br /&gt;   /home/snick/Software/php5-5.2.1/ext/mssql/modules&lt;br /&gt;...&lt;/pre&gt;&lt;br /&gt;PHP modules located in /usr/lib/php5/20060613+lfs/ (change last directory if differs). Just copy new module:&lt;br /&gt;&lt;pre&gt;sudo cp php5-5.2.1/ext/mssql/modules/mssql.so \&lt;br /&gt;  /usr/lib/php5/20060613+lfs&lt;/pre&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;span style=&quot;font-size:180%;&quot;&gt;Step 3. Configuring PHP&lt;/span&gt;&lt;br /&gt;&lt;p&gt;Setup PHP to use new module:&lt;br /&gt;&lt;pre&gt;sudo vim /etc/php5/conf.d/mssql.ini&lt;/pre&gt;&lt;br /&gt;Add text &lt;code&gt;extension=mssql.so&lt;/code&gt; and save the file. Restart Apache.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Make sure that you correctly setup &lt;code&gt;/etc/freetds/freetds.conf&lt;/code&gt; for your servers.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://phptunes.blogspot.com/feeds/261482391140809198/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/33088939/261482391140809198' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33088939/posts/default/261482391140809198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33088939/posts/default/261482391140809198'/><link rel='alternate' type='text/html' href='http://phptunes.blogspot.com/2007/07/ubuntu-704-feisty-php-installation-with.html' title='Ubuntu 7.04 (Feisty): PHP installation with MSSQL'/><author><name>Snick</name><uri>http://www.blogger.com/profile/02589164989077217519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/blogger/1828/3628/320/me.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33088939.post-4072125721516874936</id><published>2007-03-02T18:33:00.002+03:00</published><updated>2009-02-10T01:59:48.369+03:00</updated><title type='text'>JCal Pro - Russian language</title><content type='html'>Натолкнулся недавно на CMS &lt;a href=&quot;http://www.joom.ru/&quot; target=&quot;_blank&quot;&gt;Joomla&lt;/a&gt;. Симпатичная штука, задачи свои решает, обросла множеством плагинчиков и является веткой известной CMS &lt;a href=&quot;http://www.mamboserver.com/&quot; target=&quot;_blank&quot;&gt;Mambo&lt;/a&gt;. Понадобился мне календарь с хорошим внешним видом и с возможностью публикации событий пользователями. После нескольких дней перелопачивания всевозможных &lt;a href=&quot;http://forge.joomla.org/sf/projects/jevents&quot; target=&quot;_blank&quot;&gt;JEvents&lt;/a&gt;, &lt;a href=&quot;http://www.joomla-addons.org/&quot; target=&quot;_blank&quot;&gt;Easy Calendar&lt;/a&gt; и т.п., я натолкнулся на &lt;a href=&quot;http://dev.anything-digital.com/&quot; target=&quot;_blank&quot;&gt;JCal Pro&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Выглядит замечательно, функционирует нормально, но русского нет в принципе. Пара часов и этот недостаток устранен =)&lt;br /&gt;&lt;br /&gt;Один момент: потребовался небольшой фикс самого JCal Pro. В файле &lt;i&gt;JOOMLA_ROOT/components/com_jcalpro/config.inc.php&lt;/i&gt; есть вызов &lt;code&gt;setlocale(LC_TIME, ...)&lt;/code&gt;. Перед ним нужно добавить &lt;code&gt;setlocale(LC_CTYPE, ...)&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;Файл с переводом (надо положить в &lt;i&gt;JOOMLA_ROOT/components/com_jcalpro/languages/russian&lt;/i&gt;): &lt;s&gt;&lt;a href=&quot;#&quot;&gt;http://www.snick.ru/jcalpro/russian_v1.5.0.1.zip&lt;/a&gt;&lt;/s&gt;&lt;br /&gt;&lt;br /&gt;Файл с переводом и фиксом (надо положить в &lt;i&gt;JOOMLA_ROOT/components/com_jcalpro&lt;/i&gt;): &lt;s&gt;&lt;a href=&quot;#&quot;&gt;http://www.snick.ru/jcalpro/russian_with_fix_v1.5.0.1.zip&lt;/a&gt;&lt;/s&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://dev.anything-digital.com/index.php?option=com_smf&amp;amp;Itemid=71&amp;amp;topic=448.0&quot; target=&quot;_blank&quot;&gt;Анонс на сайте JCal Pro&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;UPD (en): I&#39;ve moved files to GoogleCode availale at &lt;a href=&quot;http://code.google.com/p/ru-jcalpro&quot;&gt;http://code.google.com/p/ru-jcalpro&lt;/a&gt;. As bonus - pre-encoded Windows-1251 (aka CP1251) and UTF-8 versions.&lt;br /&gt;&lt;br /&gt;UPD (ru): Файлы теперь хостятся у гугла &lt;a href=&quot;http://code.google.com/p/ru-jcalpro&quot;&gt;http://code.google.com/p/ru-jcalpro&lt;/a&gt;. В качестве бонуса там две версии - под виндовую CP1251 и универсальную UTF-8 кодировки.&lt;br /&gt;&lt;br /&gt;PS: Спасибо Юре Духничу - я уж думал, что вместе со snick.ru мой перевод канул в лету =)</content><link rel='replies' type='application/atom+xml' href='http://phptunes.blogspot.com/feeds/4072125721516874936/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/33088939/4072125721516874936' title='Комментарии: 6'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33088939/posts/default/4072125721516874936'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33088939/posts/default/4072125721516874936'/><link rel='alternate' type='text/html' href='http://phptunes.blogspot.com/2007/03/jcal-pro-russian-language.html' title='JCal Pro - Russian language'/><author><name>Snick</name><uri>http://www.blogger.com/profile/02589164989077217519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/blogger/1828/3628/320/me.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33088939.post-116915866383322239</id><published>2007-01-19T00:17:00.000+03:00</published><updated>2008-02-06T11:55:26.787+03:00</updated><title type='text'>Кириллица и php_json</title><content type='html'>Поддержка UTF-8 в PHP весьма слабая, то же касается и кириллицы. Начав использовать javascript-библиотеку &lt;a href=&quot;http://prototype.conio.net/&quot; target=&quot;_blank&quot;&gt;Prototype&lt;/a&gt; и &lt;a href=&quot;http://www.ajax.org/&quot; target=&quot;_blank&quot;&gt;AJAX&lt;/a&gt; я столкнулся с тем, что модуль &lt;a href=&quot;http://pecl.php.net/package/json&quot; target=&quot;_blank&quot;&gt;php_json&lt;/a&gt;, который включен в PHP с версии 5.2.0 (для остальных доступен в виде &lt;a href=&quot;http://pecl4win.php.net/ext.php/php_json.dll&quot; target=&quot;_blank&quot;&gt;extension&lt;/a&gt;), категорически отказывается воспринимать русский язык. Кириллица просто вырезается.&lt;br /&gt;&lt;br /&gt;Дело в том, что php_json обрабатывает только ISO-8859-1, а остальные символы отбрасывает. Функция &lt;a href=&quot;http://php.net/utf8_encode&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;utf8_encode()&lt;/code&gt;&lt;/a&gt; тоже не подходит из-за того, что неправильно определяет код символа. Например, русская буква &quot;а&quot; имеет код &lt;code&gt;\u0434&lt;/code&gt;, а &lt;code&gt;utf8_encode()&lt;/code&gt; кодирует ее как &lt;code&gt;\u00e4&lt;/code&gt;. В итоге - на странице кракозябры.&lt;br /&gt;&lt;br /&gt;Положение спасает &lt;a href=&quot;http://php.net/iconv&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;iconv()&lt;/code&gt;&lt;/a&gt;: &lt;code&gt;iconv(&#39;cp1251&#39;, &#39;utf-8&#39;, $string)&lt;/code&gt;. Преобразование корректное. Но, к сожалению, это исключает использование функции &lt;a href=&quot;http://php.net/json_encode&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;json_encode()&lt;/code&gt;&lt;/a&gt; &quot;как есть&quot; - придется написать свою функцию json_safe_encode() для кодирования данных в формат JSON:&lt;pre&gt;function json_safe_encode($var)&lt;br /&gt;{&lt;br /&gt;   return json_encode(json_fix_cyr($var));&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function json_fix_cyr($var)&lt;br /&gt;{&lt;br /&gt;   if (is_array($var)) {&lt;br /&gt;       $new = array();&lt;br /&gt;       foreach ($var as $k =&gt; $v) {&lt;br /&gt;           $new[json_fix_cyr($k)] = json_fix_cyr($v);&lt;br /&gt;       }&lt;br /&gt;       $var = $new;&lt;br /&gt;   } elseif (is_object($var)) {&lt;br /&gt;       $vars = get_object_vars($var);&lt;br /&gt;       foreach ($vars as $m =&gt; $v) {&lt;br /&gt;           $var-&gt;$m = json_fix_cyr($v);&lt;br /&gt;       }&lt;br /&gt;   } elseif (is_string($var)) {&lt;br /&gt;       $var = iconv(&#39;cp1251&#39;, &#39;utf-8&#39;, $var);&lt;br /&gt;   }&lt;br /&gt;   return $var;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;PS.&lt;/span&gt;&lt;br /&gt;На &lt;a href=&quot;http://www.json.org/&quot; target=&quot;_blank&quot;&gt;www.json.org&lt;/a&gt; масса полезных ссылок.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;UPD 2008-02-06: &lt;code&gt;$vars = get_object_vars($var);&lt;/code&gt; instead of &lt;code&gt;$vars = get_class_vars(get_class($var));&lt;/code&gt;. Thanks to &lt;a href=&#39;http://php.net/json_encode&#39; target=&#39;_blank&#39;&gt;Pascal Martineau&lt;/a&gt;&lt;/em&gt;</content><link rel='replies' type='application/atom+xml' href='http://phptunes.blogspot.com/feeds/116915866383322239/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/33088939/116915866383322239' title='Комментарии: 16'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33088939/posts/default/116915866383322239'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33088939/posts/default/116915866383322239'/><link rel='alternate' type='text/html' href='http://phptunes.blogspot.com/2007/01/phpjson.html' title='Кириллица и php_json'/><author><name>Snick</name><uri>http://www.blogger.com/profile/02589164989077217519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/blogger/1828/3628/320/me.jpg'/></author><thr:total>16</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33088939.post-115614620918165587</id><published>2006-08-21T11:42:00.000+04:00</published><updated>2007-01-19T00:04:28.930+03:00</updated><title type='text'>Работа PHP4 и PHP5 на одном сервере</title><content type='html'>PHP-программисту порой требуется иметь на своем компьютере несколько версий PHP. Чаще всего это последние версии PHP4 и PHP5. Полностью переустанавливать PHP неудобно и долго - это замена файлов в системных каталогах, настройка веб-сервера и PHP.&lt;br /&gt;&lt;br /&gt;Я расскажу об одном из способов иметь на Windows XP две версии PHP одновременно. В результате у вас будет рабочий компьютер с Apache 2, PHP4 и PHP5. Если у вас уже установлены веб-сервер Apache и обе версии PHP, то переходите к третьему шагу.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:180%;&quot;&gt;Первый шаг: Установка Apache 2.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Скачайте последнюю версию &lt;a href=&quot;http://httpd.apache.org/download.cgi&quot; target=&quot;_blank&quot;&gt;Apache 2.0&lt;/a&gt;. На данный момент это версия &lt;a href=&quot;http://apache.rediska.ru/httpd/binaries/win32/apache_2.0.59-win32-x86-no_ssl.msi&quot;&gt;2.0.59&lt;/a&gt;. Во время установки в качестве хоста укажите &lt;span style=&quot;font-style: italic;&quot;&gt;localhost&lt;/span&gt;, порт &lt;span style=&quot;font-style: italic;&quot;&gt;80&lt;/span&gt;, электронный адрес &lt;span style=&quot;font-style: italic;&quot;&gt;webmaster@localhost&lt;/span&gt;, место для установки &lt;span style=&quot;font-style: italic;&quot;&gt;C:\usr\local\apache2&lt;/span&gt;.&lt;br /&gt;&lt;blockquote&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;Программы, которые были портированы с Linux я рекомендую устанавливать в X:\usr\local и придерживаться этого правила. Множество веб-приложений написаны с расчетом на то, что они будут работать под управлением веб-сервера на Linux или FreeBSD. Руководства по установке для таких веб-приложений написаны с учетом отличной от Windows струкруты каталогов. Вам будет проще их настраивать если структруа ваших каталогов будет близка к Linux.&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;Остальные настройки оставьте по-умолчанию. Убедитесь, что Apache будет установлен как сервис.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:180%;&quot;&gt;Второй шаг: Установка PHP.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.php.net/downloads.php&quot; target=&quot;_blank&quot;&gt;Скачайте&lt;/a&gt; PHP4 (на данный момент 4.4.4) и PHP5 (5.2.0) в zip-архивах. Распакуйте файлы в&lt;span style=&quot;font-style: italic;&quot;&gt; C:\usr\local\php4&lt;/span&gt; и &lt;span style=&quot;font-style: italic;&quot;&gt;C:\usr\local\php5&lt;/span&gt; соответственно. Выполните необходимые действия по настройке PHP, описанные в &lt;span style=&quot;font-style: italic;&quot;&gt;install.txt&lt;/span&gt;, глава &lt;span style=&quot;font-style: italic;&quot;&gt;Manual Installation Steps&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:180%;&quot;&gt;Третий шаг: Включаем обе версии.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Идея заключается в том, что в конфигурационном файле Apache (&lt;span style=&quot;font-style: italic;&quot;&gt;httpd.conf&lt;/span&gt;) можно указать местоположения &lt;span style=&quot;font-style: italic;&quot;&gt;php.ini&lt;/span&gt; с помощью директивы &lt;span style=&quot;font-style: italic;&quot;&gt;PHPIniDir&lt;/span&gt;, а так же из &lt;span style=&quot;font-style: italic;&quot;&gt;httpd.conf&lt;/span&gt; можно загружать другие конфигурационные файлы. Эти два факта позволяют сделать два конфигурационных файла, которые будут отличаться значением LoadModule и PHPIniDir, а остальные директивы (те, которые одинаковы для PHP4 и PHP5) брать из других файлов.&lt;br /&gt;&lt;br /&gt;Так как Apache не может загрузить модули PHP4 и PHP5 одновременно, мы сделаем два разных конфигурационных файла: &lt;span style=&quot;font-style: italic;&quot;&gt;httpd-php4.conf&lt;/span&gt; и &lt;span style=&quot;font-style: italic;&quot;&gt;httpd-php5.conf&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Переименуйте &lt;span style=&quot;font-style: italic;&quot;&gt;httpd.conf&lt;/span&gt; (находится в &lt;span style=&quot;font-style: italic;&quot;&gt;C:\usr\local\apache2\conf&lt;/span&gt;) в &lt;span style=&quot;font-style: italic;&quot;&gt;httpd-common.conf&lt;/span&gt;. Создайте пустой файл httpd-php4.conf и скопируйте в него:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;## PHP 4 Apache configuration&lt;br /&gt;&lt;br /&gt;#&lt;br /&gt;# ServerRoot: The top of the directory tree under which the server&#39;s&lt;br /&gt;# configuration, error, and log files are kept.&lt;br /&gt;#&lt;br /&gt;ServerRoot &quot;C:\usr\local\apache2&quot;&lt;br /&gt;&lt;br /&gt;# PHP Settings&lt;br /&gt;PHPIniDir &quot;C:\usr\local\php4&quot;&lt;br /&gt;LoadModule php4_module C:\usr\local\php4\php4apache2.dll&lt;br /&gt;AddType application/x-httpd-php .php&lt;br /&gt;AddType application/x-httpd-php-source .phps&lt;br /&gt;&lt;br /&gt;# Load default Apache settings&lt;br /&gt;Include conf/httpd-common.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Обратите внимание, что файл &lt;span style=&quot;font-style: italic;&quot;&gt;C:\usr\local\php4\&lt;span style=&quot;font-weight: bold;&quot;&gt;sapi&lt;/span&gt;\php4apache2.dll&lt;/span&gt; необходимо скопировать в &lt;span style=&quot;font-style: italic;&quot;&gt;C:\usr\local\php4&lt;/span&gt;!&lt;br /&gt;&lt;br /&gt;Теперь создайте &lt;span style=&quot;font-style: italic;&quot;&gt;httpd-php5.conf&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;## PHP 5 Apache configuration&lt;br /&gt;&lt;br /&gt;#&lt;br /&gt;# ServerRoot: The top of the directory tree under which the server&#39;s&lt;br /&gt;# configuration, error, and log files are kept.&lt;br /&gt;#&lt;br /&gt;ServerRoot &quot;C:\usr\local\apache2&quot;&lt;br /&gt;&lt;br /&gt;# PHP Settings&lt;br /&gt;PHPIniDir &quot;C:\usr\local\php5&quot;&lt;br /&gt;LoadModule php5_module C:\usr\local\php5\php5apache2.dll&lt;br /&gt;AddType application/x-httpd-php .php&lt;br /&gt;AddType application/x-httpd-php-source .phps&lt;br /&gt;&lt;br /&gt;# Load default Apache settings&lt;br /&gt;Include conf/httpd-common.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Закомментируйте в файле httpd-common.conf сроку с директивой ServerRoot:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;...&lt;br /&gt;#&lt;br /&gt;# Do NOT add a slash at the end of the directory path.&lt;br /&gt;#&lt;br /&gt;&lt;span style=&quot;color: rgb(255, 102, 102);&quot;&gt;# ServerRoot &quot;D:/usr/local/Apache2&quot;&lt;/span&gt;&lt;br /&gt;...&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Теперь настроим сервисы. Остановите Apache если он запущен. Сначала удалим сервис, который был добавлен во время установки веб-сервера (&lt;span style=&quot;font-style: italic;&quot;&gt;Пуск-&gt;Выполнить, наберите cmd, затем нажмите OK&lt;/span&gt;):&lt;br /&gt;&lt;br /&gt;&lt;code&gt;C:\usr\local\apache2\bin\apache.exe -k uninstall&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Установка для PHP4:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;С:\usr\local\apache2\bin\apache.exe -n apache2-php4 -f &quot;C:\usr\local\apache2\conf\httpd-php4.conf&quot; -k install&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Установка для PHP5:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;С:\usr\local\apache2\bin\apache.exe -n apache2-php5 -f &quot;C:\usr\local\apache2\conf\httpd-php5.conf&quot; -k install&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Если возникли ошибки, то обратитесь к &lt;a href=&quot;http://httpd.apache.org/docs/2.0/&quot; target=&quot;_blank&quot;&gt;документации&lt;/a&gt; Apache или поищите решение в &lt;a href=&quot;http://www.google.com&quot; target=&quot;_blank&quot;&gt;Google&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Проверим установку. Создайте файл &lt;span style=&quot;font-style: italic;&quot;&gt;C:\usr\local\apache2\htdocs\info.php&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&amp;lt;?php&lt;br /&gt;&lt;br /&gt;phpinfo();&lt;br /&gt;&lt;br /&gt;?&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Запустите Apache с PHP4:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;net start apache2-php4&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Откройте свой браузер и наберите &lt;span style=&quot;font-style: italic;&quot;&gt;http://localhost/info.php&lt;/span&gt;. Вверху сраницы вы увидете текст &lt;span style=&quot;font-style: italic;&quot;&gt;PHP Version 4.x.x&lt;/span&gt;. Теперь запустите Apache c PHP5:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;net stop apache2-php4&lt;br /&gt;net start apache2-php5&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Обновите страницу в браузере. Вверху сраницы вы увидете текст &lt;span style=&quot;font-style: italic;&quot;&gt;PHP Version 5.x.x&lt;/span&gt;. Вы можете переключаться между версиями вручную либо создать файлы для быстрого переключения.&lt;br /&gt;&lt;br /&gt;start-php4.cmd:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;net stop apache2-php5&lt;br /&gt;net start apache2-php4&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;start-php5.cmd:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;net stop apache2-php4&lt;br /&gt;net start apache2-php5&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:180%;&quot;&gt;Заключение.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;С помощью этого метода можно иметь несколько версий Apache и несколько версий PHP в различных комбинациях. Для того, чтобы PHP4 и PHP5 работали &lt;span style=&quot;font-style: italic;&quot;&gt;одновременно&lt;/span&gt;, потребуется сделать копию веб-сервера, например, в C:\usr\local\apache2_another и настройить его на другой IP или порт.</content><link rel='replies' type='application/atom+xml' href='http://phptunes.blogspot.com/feeds/115614620918165587/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/33088939/115614620918165587' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33088939/posts/default/115614620918165587'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33088939/posts/default/115614620918165587'/><link rel='alternate' type='text/html' href='http://phptunes.blogspot.com/2006/08/php4-php5.html' title='Работа PHP4 и PHP5 на одном сервере'/><author><name>Snick</name><uri>http://www.blogger.com/profile/02589164989077217519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/blogger/1828/3628/320/me.jpg'/></author><thr:total>2</thr:total></entry></feed>