<?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>KARTz.RU &#187; php</title>
	<atom:link href="http://kartz.ru/tag/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://kartz.ru</link>
	<description>кушаешь морковь - встанет вновь и вновь</description>
	<lastBuildDate>Mon, 29 Aug 2016 08:06:12 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>PHP Fatal error:  Call to undefined function sqlite_open()</title>
		<link>http://kartz.ru/2013/12/03/php-fatal-error-call-to-undefined-function-sqlite_open/</link>
		<comments>http://kartz.ru/2013/12/03/php-fatal-error-call-to-undefined-function-sqlite_open/#comments</comments>
		<pubDate>Tue, 03 Dec 2013 14:23:20 +0000</pubDate>
		<dc:creator>vasiliy</dc:creator>
				<category><![CDATA[Без рубрики]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[sqlite]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[базы данных]]></category>
		<category><![CDATA[программы]]></category>

		<guid isPermaLink="false">http://kartz.ru/?p=2399</guid>
		<description><![CDATA[Проблема: имеется относительно старый скрипт на php, работающий с базами данных sqlite2.
В то же время на современных веб-серверах поддержка sqlite версии 2 отсутствует &#8211; эта версия считается устаревшей и не поддерживается (официально начиная с php 5.4, но фактически оно не работает уже в php 5.3.10 в ubuntu 12.04.2 lts). Работают только новые версии функций в [...]]]></description>
			<content:encoded><![CDATA[<p>Проблема: имеется относительно старый скрипт на php, работающий с базами данных sqlite2.<br />
В то же время на современных веб-серверах поддержка sqlite версии 2 отсутствует &#8211; эта версия считается устаревшей и не поддерживается (официально начиная с php 5.4, но фактически оно не работает уже в php 5.3.10 в ubuntu 12.04.2 lts). Работают только новые версии функций в объектно-ориентированной обёртке, а при вызове &laquo;старых&raquo; функций получаем ошибку, вынесенную в название поста.</p>
<p>Посмотрим, какие методы решения этой проблемы существуют.<span id="more-2399"></span></p>
<p>1. Самое правильное решение. Переписать скрипт под новую версию sqlite и сконвертировать базы данных.<br />
<code><br />
sqlite DB_name .dump | sqlite3 New_DB_name<br />
</code></p>
<p>2. Дописать костыль/заглушку/враппер для &laquo;старых&raquo; функций.<br />
<code></p>
<p>function sqlite_open($location,$mode)<br />
{<br />
    $handle = new SQLite3($location);<br />
    return $handle;<br />
}<br />
function sqlite_query($dbhandle,$query)<br />
{<br />
    $array['dbhandle'] = $dbhandle;<br />
    $array['query'] = $query;<br />
    $result = $dbhandle->query($query);<br />
    return $result;<br />
}<br />
function sqlite_fetch_array(&#038;$result,$type)<br />
{<br />
    #Get Columns<br />
    $i = 0;<br />
    while ($result->columnName($i))<br />
    {<br />
        $columns[ ] = $result->columnName($i);<br />
        $i++;<br />
    }</p>
<p>    $resx = $result->fetchArray(SQLITE3_ASSOC);<br />
    return $resx;<br />
}</p>
<p></code></p>
<p>3. Обратиться к репозиторию PECL (PEAR), где есть устаревшая библиотека.<br />
<code><br />
svn checkout http://svn.php.net/repository/pecl/sqlite/trunk sqlite<br />
</code></p>
<p>4. Подсунуть системе бинарники модулей из пакетов старых дистрибутивов. Главное &#8211; не перепутать архитектуру. Подсовывать надо сюда /usr/lib/php5/20090626</p>
<p>После этого вписать соответствующий файл в /etc/php5/conf.d</p>
<p>Скачать старенький пакет на момент написания статьи можно тут<br />
mirror.yandex.ru/ubuntu/pool/main/p/php5/php5-sqlite_5.3.2-1ubuntu4_amd64.deb<br />
(для другой архитектуры изменить имя пакета)</p>
]]></content:encoded>
			<wfw:commentRss>http://kartz.ru/2013/12/03/php-fatal-error-call-to-undefined-function-sqlite_open/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>интересная особенность php</title>
		<link>http://kartz.ru/2011/11/07/php-bug/</link>
		<comments>http://kartz.ru/2011/11/07/php-bug/#comments</comments>
		<pubDate>Sun, 06 Nov 2011 23:15:46 +0000</pubDate>
		<dc:creator>vasiliy</dc:creator>
				<category><![CDATA[Без рубрики]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://kartz.ru/?p=1390</guid>
		<description><![CDATA[Внезапно:
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING
в строке, в которой вроде всё нормально:
echo($m/2.&#187;\n&#187;);
Долго думал, что тут не так. Оказалось, точка (бинарная операция соединения строк) считается тут унарной точкой, разделяющей целую и дробную часть вещественного числа. Чтобы заработало, нужно использовать один из этих вариантов:
echo(($m/2).&#187;\n&#187;); // явно указываем порядок действий
echo($m/2 . &#171;\n&#187;); // отделяем операнды от точки пробелами
]]></description>
			<content:encoded><![CDATA[<p>Внезапно:<br />
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING<br />
в строке, в которой вроде всё нормально:<br />
echo($m/2.&raquo;\n&raquo;);</p>
<p>Долго думал, что тут не так. Оказалось, точка (бинарная операция соединения строк) считается тут унарной точкой, разделяющей целую и дробную часть вещественного числа. Чтобы заработало, нужно использовать один из этих вариантов:<br />
echo(($m/2).&raquo;\n&raquo;); // явно указываем порядок действий<br />
echo($m/2 . &laquo;\n&raquo;); // отделяем операнды от точки пробелами</p>
]]></content:encoded>
			<wfw:commentRss>http://kartz.ru/2011/11/07/php-bug/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
