LINUX.ORG.RU
решено ФорумTalks

mysql & php - с разморозкой ?

 , ,


0

1

После апгрейда glpi 0.80.1->0.84.4 он не смог запустить даже апгрейдер - видители mysqli ему нужен, а не mysql.

Ну ладно, раскомментировали строчку в php.ini перезапустили php-fpm.

Все равно не пашет - не может подключиться к серверу! #%$#@^%$!

Берем пишем проверочный скрипт для подключения к базе.

Хрен, не работает. strace показывает, что это гуано хочет unix-сокет mysql не смотря на то, что в параметрах подключения явно сказана «localhost:3306»! (Все примеры по mysqli используют «localhost»)

Замена «localhost» на 127.0.0.1 проблему исправляет, но какой упоротый разраб до этого догадался ?

★★★★★

Замена «localhost» на 127.0.0.1 проблему исправляет, но какой упоротый разраб до этого догадался ?

Все правильно. localhost - если хочешь unix-сокет, а 127.0.0.1 или другой IP - это для tcp-сокета. Так всегда и было.

Black_Roland ★★★★
()

видители mysqli ему нужен, а не mysql.


В PHP 5 для MySQL AB (http://www.mysql.com) было написано новое расширение MySQL, которое позволяет вам полностью использовать преимущества новых функциональных возможностей в MySQL 4.1 и более новых версий.

Пятая версия PHP была выпущена разработчиками 13 июля 2004 года.




Если кто-то за 10 лет не научился готовить продукт, старая альтернатива которого была объявлена три года назад (в 2011-м) — то это, конечно, PHP виноват :D

Интересно, много ли программ, написанных под Python или Ruby в 2004-м пойдут на Python 3 и Ruby 2? :)

Замена «localhost» на 127.0.0.1 проблему исправляет, но какой упоротый разраб до этого догадался ?

А можно прочитать документацию по mysql и увидеть, что 127.0.0.1 и localhost в правах доступа — не одно и то же. Но, да, это опять MySQL виноват, какой же вменяемый программист/админ документацию изучать будет? :D

KRoN73 ★★★★★
()

видители mysqli ему нужен, а не mysql

Я не знаю кто такие видители, но «mysql» это ехала инъекция через инъекцию. Завязывай с некрофильством и переходи на mysqli.

Deleted
()
Ответ на: комментарий от KRoN73

А можно прочитать документацию по mysql и увидеть, что 127.0.0.1 и localhost в правах доступа — не одно и то же. Но, да, это опять MySQL виноват, какой же вменяемый программист/админ документацию изучать будет? :D

При чем здесь сервер ? Речь о клиентском подключении из php mysqli ! Какой чудак догадался использовать имя localhost для обращения к unix-сокету ?

у mysqli есть несколько вариантов подключения ( с разным числом параметров) в том числе с явным указанием номера порта, который игнорируется если адрес хоста «localhost»! Что, у unix-сокета есть параметр порт ?

vel ★★★★★
() автор топика
Ответ на: комментарий от vel

Что, у unix-сокета есть параметр порт ?

Нет. Зато бывают адреса с портом по умолчанию.

Какой чудак догадался использовать...

Важнее, когда чудаки считают себя выше изучения темы, с которой работают, а потом ругаются, что весь мир идёт не в ногу, и лишь они одни — д'Артаньяны :)

KRoN73 ★★★★★
()
Ответ на: комментарий от Xellos

Это так в головах php-шников, которые только про mysql слышали :)

В перловых модулях это сделано без изврата! Если указали host=localhost то идем на localhost, а если не указан host, то в локальный сокет.

vel ★★★★★
() автор топика
Ответ на: комментарий от ziemin

Какие логи ? mysql - там тихо, т.к. к нему не обращаются, у glpi - всe на экране.

mysqli() c кодом ошибки и расшифровкой - «No such files or directory»

и это при обращении к «localhost:3306» :)

vel ★★★★★
() автор топика
Ответ на: комментарий от vel

это называется не идиотизм, а костыли

Deleted
()
Ответ на: комментарий от vel

mysql - там тихо, т.к. к нему не обращаются, у glpi - всe на экране.
mysqli() c кодом ошибки и расшифровкой - «No such files or directory»

видители mysqli ему нужен, а не mysql.

А это ты откуда узнал?

ziemin ★★
()
Ответ на: комментарий от vel

Я говорю не про перл, точнее DBI, а про этот, как его там... pg_hba.conf

Xellos ★★★★★
()
Ответ на: комментарий от vel

А ещё была какая-то графическая тулза для постгреса, линуксовая... чёрт, память подводит. Так там тоже вроде различался локалхост как юникс-сокет и локалхост как tcp.

Xellos ★★★★★
()
Ответ на: комментарий от Deleted

IMHO sql инъекции происходят через мозг программера, который не утруждает себя проверкой передаваемых параметров :)

Для меня более родное perl/DBI/postgres и даже php & postgres не вызывает столько изжоги как от php & mysql.

vel ★★★★★
() автор топика
Ответ на: комментарий от vel

Мозг не мозг, но в mysqli можно привязывать параметры, а не страдать с mysql_real_escape_string :)

Deleted
()
Ответ на: комментарий от KRoN73

Чем php + postgres менее изжоговый, чем php + mysql?

php'шный модуль для постгреса через раз сегфолтился, когда я им пользовался в последний раз годике в 2010.

Кроме того, мужуки, ну медь вашу ерш, mysqli давно задепрекейчен в пользу PDO + mysqlnd, вы совсем в своих берлогах замариновались.

shimon ★★★★★
()
Ответ на: комментарий от KRoN73

Действительно, php в этой связке вполне достаточно для изжоги :-D

Xellos ★★★★★
()
Ответ на: комментарий от KRoN73

отсутствием mysql.

его забивание на стандарты (начиная с левым квотированием названий таблиц/полей, разными странностями в группироваках/сортировках/подзапросах) хитропопой авторизацией, разными движками, загадочные фичи mysql типа отделной кодировки поля - все это меня не радуют.

B ведь только в php & mysqli localhost != 127.0.0.1

PS Я радуюсь, что я не сталкивался с mysql < 5.1 !

vel ★★★★★
() автор топика
Ответ на: комментарий от shimon

отдельные косяки есть везде :(

Кроме того, мужуки, ну медь вашу ерш, mysqli давно задепрекейчен в пользу PDO + mysqlnd, вы совсем в своих берлогах замариновались.

Жаль, что про это многие разработчики не зают :(

vel ★★★★★
() автор топика
Ответ на: комментарий от KRoN73

в 98 году, когда встал вопрос выбора между psql и mysql, mysql был выброшен из-за отсутствия транзакций и вложенных запросов.

vel ★★★★★
() автор топика

А можно поинтересоваться, почему мсье зна^W юзает на локалхосте для связи с БД TCP/IP а не юникс соккет?

goingUp ★★★★★
()
Ответ на: комментарий от goingUp

С соседней машины тоже хотят mysql, так что без tcp не обойтись.

+ нелюбовь к unix-сокетам из-за большого числа поделок, которые не могли при старте правильно создать свой сокет.

Разница в накладных расходах для меня в данном случае несущественна.

vel ★★★★★
() автор топика
Ответ на: комментарий от uralbash
grep localhost /etc/hosts
127.0.0.1               localhost lh
vel ★★★★★
() автор топика
Ответ на: комментарий от vel

С соседней машины тоже хотят mysql, так что без tcp не обойтись.

Это не повод форсировать tcp/ip для локалхоста

+ нелюбовь к unix-сокетам из-за большого числа поделок, которые не могли при старте правильно создать свой сокет.

Странный довод

Разница в накладных расходах для меня в данном случае несущественна.

Ты конечно извини, но ты не имеешь права критиковать разработчиков пхп :). Иначе получится как в притче, когда видишь соринку в чужом глазу, а бревна в своем не видишь :)

goingUp ★★★★★
()
Последнее исправление: goingUp (всего исправлений: 1)
Ответ на: комментарий от goingUp

Я уж как-нибудь сам разберусь, когда и какой мне использовать способ подключения к базе.

Холивар на тему почему юникс-сокет лучше tcp-сокета, пускай разводит кто-нибудь другой.

Критиковать этих разработчиков уже бесполезно, их нужно было учить, пока они были маленькими.

vel ★★★★★
() автор топика
Ответ на: комментарий от vel

Но, «localhost» != «127.0.0.1» это идиотизм!

ну да конечно...

q11q11 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.