Unable to connect to your database server using the provided settings. CodeIgniter

Unable to connect to your database server using the provided settings. CodeIgniter

Решается на Windows 7
Указанием в соединении /application/config/database.php вместо
$db ['default'] ['hostname'] = 'localhost';
указание IP адреса.
$db ['default'] ['hostname'] = '127.0.0.1';
Проблема решилась.
Ничего больше не менял.

Можно еще — тем что пересоздал пользователя БД, установил новые права на пользование БД.

Сначал посчитал что проблема в autoload 'database'. Пробовал в ручное соединение $this->load->database(); тоже не помогало.
Перезагрузка MySQL в решении не помогла.

Небольшой патчинг php_templates-1.7.2

Не компилится с ошибками:

/home/vadim/build/templates/tmpl_lib.c: In function 'php_tmpl_pre_parse':
 /home/vadim/build/templates/tmpl_lib.c:217: error: lvalue required as left operand of assignment
 /home/vadim/build/templates/tmpl_lib.c: In function 'php_tmpl_set':
 /home/vadim/build/templates/tmpl_lib.c:446: warning: comparison of distinct pointer types lacks a cast
 /home/vadim/build/templates/tmpl_lib.c:447: warning: comparison of distinct pointer types lacks a cast
 /home/vadim/build/templates/tmpl_lib.c: In function 'php_tmpl_parse':
 /home/vadim/build/templates/tmpl_lib.c:700: error: lvalue required as left operand of assignment
 /home/vadim/build/templates/tmpl_lib.c: In function 'php_tmpl_load_structure':
 /home/vadim/build/templates/tmpl_lib.c:880: error: lvalue required as left operand of assignment


Патчик:

--- ./templates.orig/tmpl_lib.c 2011-06-17 00:39:42.312591830 +0400
+++ ./templates/tmpl_lib.c      2011-06-17 00:40:32.342594981 +0400
@@ -214,7 +214,7 @@
        buf_alloc = TMPL_MAX_TAG_LEN+4;
        buf = (uchar*)emalloc(buf_alloc);
        /* Searching algorythm will require larger buffer */
-       ZV(tmpl->original) = (char*)erealloc(ZV(tmpl->original),
+       Z_STRVAL_P(tmpl->original) = (char*)erealloc(ZV(tmpl->original),
                ZL(tmpl->original) + MAX(
                        ZL(tmpl->tag_left), MAX(
                                ZL(tmpl->tag_right), MAX(
@@ -697,7 +697,7 @@
                                        /* Make a recursive call */
                                        if(buf_alloc <= (unsigned)(ZL(path)+1+ZL(tag->name)+1)) {
                                                while(buf_alloc <= (unsigned)(ZL(path)+1+ZL(tag->name)+1)) buf_alloc <<= 1;
-                                               ZV(new_path) = (char*)erealloc(ZV(new_path), buf_alloc);
+                                               Z_STRVAL_P(new_path) = (char*)erealloc(ZV(new_path), buf_alloc);
                                        }
                                        sprintf(ZV(new_path), (1 == ZL(path) && '/' == ZV(path)[0]) ? "%s%s" : "%s/%s", ZV(path), ZV(tag->name));
                                        ZL(new_path) = ZL(path) + ZL(tag->name) + ((1 == ZL(path) && '/' == ZV(path)[0]) ? 0 : 1);
@@ -877,7 +877,10 @@
                        } else p = key;
                        ZVAL_STRINGL(new_value, p, (TMPL_LONG == mod) ? key_len-1 : key_len-1-(p-key), 1);
                        if((TMPL_TAG | TMPL_CONTEXT) == mask && TMPL_CONTEXT == tag->typ) {
-                               ZV(new_value) = (char*)erealloc(ZV(new_value), ZL(new_value)+2);
+                               Z_STRVAL_P(new_value) = (char*)erealloc(ZV(new_value), ZL(new_value)+2);
+
+
+
                                memcpy(ZV(new_value)+ZL(new_value), "/", 2);
                                ZL(new_value) += 1;
                        }


vadim.flightmedia.ru/blog/2011/06/16/небольшой-патчинг-php_templates-1-7-2/

Установка модуля PHP templates.so на Debian Lenny x86

К сожалению под Debian x64 нет модуля, только под Debian x32. Но если вы попробуете поставить, то он у вас будет выдавать при компиляции make ошибки.

php templates.so

А если попробуете скопировать модуль с x32 на x64 то будет ошибка. Непомню как нызавается она, но чтото о несовместимости системы говорит.

Читать дальше →

Установка модуля PHP templates.so на Debian Lenny x86

Установка модулей

Допустим, модуль называется php-templates.
Сначала создадим папку для установки:
mkdir ~/php


Установка через PECL

Достаточно ввести следующую команду:
pecl install --installroot=~/php php-templates


Однако, этот способ не всегда работает, и в таких случаях приходится устанавливать «вручную»:

Установка «вручную»



# Скачиваем архив с модулем и распаковываем
#wget http://space.dl.sourceforge.net/project/php-templates/php-templates/1.7/php_templates-1.7.2.tar.gz
#tar -cvzf php_templates-1.7.2.tar.gz


# Заходим в распакованную папку:
cd templates


# Если нет других указаний, устанавливаем модуль стандартным для PHP образом:
#phpize
#./configure --enable-templates=shared
#make
#make install


Если у вас нет phpize
то придется поставить:
#apt-get install php5-dev 


Получаем скомпилированный модуль:
root@localhost:~/templates# ls -l ./modules/templates.so
-rw-r--r-- 1 root root 107068 2011-01-23 ./modules/templates.so


Этот модуль копируем в папку где хранятся модули по умолчанию:
cp ./modules/templates.so /usr/lib/php5/20060613+lfs


Далее идем в ISPmanager IP-server/manager/ispmgr
В раздел "Расширения PHP"
php templates.so

Если ISPmanager не видит наш модуль, то перезагружаем его
#service restart httpd
#killall -9 ispmgr


Выбираем наш модуль templates.so и нажимаем на лампочку для активации модуля.

php templates.so

Для тех кто переходит изучать с PHP на Perl

В PHP мы знем что массивы бывают числовые, и строковые.

1. В массивах первого типа элемент определяется индексом в последовательности. Такие массивы называются простыми массивами.
<? 
// Простой  массив с цифровыми ключами
$names[0]="Апельсин";
$names[1]="Банан";
$names[2]="Груша";
$names[3]="Помидор";
// Здесь: names - имя массива, а 0, 1, 2, 3 - индексы массива
foreach ($names as $k=>$v){
	echo "Ключь: $k | Значение: $v\n";
}
?>


2. Массивы второго типа имеют ассоциативную природу, и для обращения к элементам используются ключи, логически связанные со значениями. Такие массивы называют ассоциативными массивами.
<? // Ассоциативный массив
$names["Иванов"]="Иван";
$names["Сидоров"]="Николай";
$names["Петров"]="Петр";
// В данном примере: фамилии - ключи ассоциативного массива
// , а имена - элементы массива names

foreach ($names as $v){
	echo $v."\n";
}
?>


В перле же ассоциативные массивы выглядят иначе. При присваивании элемента используются фигурные {} скобки а в PHP квадратные []

#!perl -w
# Ассоциативный массив
#используются <b>фигурные </b><b>{}</b> скобки 
%ages = ("Andy", 22,
         "Mike", 23,
         "Dr. Jones", 27,
         "Mr. Smyth", 21,
         "Katrin", "who knows");
# В данном примере: фамилии - ключи ассоциативного массива
# , а имена - элементы массива ages

foreach $person (keys %ages)
{
   print "Ключь: $person Значение: $ages{$person}\n";
}

# Просто значение
foreach $age (values %ages)
{
   print "Значение: $age\n";
}


#!perl -w

# Ассоциативный массив
#используются <b>фигурные </b><b>{}</b> скобки 
$names{"Иванов"}="Иван";
$names{"Сидоров"}="Николай";
$names{"Петров"}="Петр";
# В данном примере: фамилии - ключи ассоциативного массива
# , а имена - элементы массива names

foreach $person (keys %names)
{
   print "Ключь: $person Значение: $names{$person}\n";
}