Ошибки при настройке и установке Apache, PHP, MySQL/MariaDB, phpMyAdmin

Оглавление

1. Где смотреть ошибки веб-сервера и как правильно задать вопрос

2. Ошибки Apache в Windows

3. Ошибки PHP в Windows

4. Ошибки MySQL/MariaDB в Windows

5. Ошибки phpMyAdmin в Windows

6. Вопросы и ответы по веб-серверу в Windows


Где смотреть ошибки веб-сервера и как правильно задать вопрос

Некоторые ошибки выводятся при открытии сайтов на локальном хостинге или при тестировании своих скриптов. Такие ошибки обычно сразу показываются в веб-браузере.

Некоторые ошибки не дают нормально установиться и запустится веб-серверу. Такие ошибки могут выводиться в командную строку (правда, не всегда в читаемом виде). Также может возникнуть ситуация, что показываться пустая веб-страница или какой-то компонент веб-сервера просто не запускается без видимых проблем.

В любом случае, самую полную информацию об ошибках Apache и PHP вы найдёте в файле журналов Apache (по ссылке подробности о содержимом и настройке этого файла). Если у вас веб-сервер установлен по этой инструкции, то путь до этого файла такой: C:\Server\bin\Apache24\logs\error.log. В любом случае, файл журнала находится по умолчанию в папке веб-сервера в подпапке logs, либо может быть в другом месте в соответствии с директивой ErrorLog

Журнал ошибок MySQL и MariaDB находится в файле в C:\Server\data\DB\data\*.err (конкретное имя файла зависит от имени компьютера). Опять же, если вы устанавливали по другой инструкции или у вас другие настройки СУБД, то ищите этот файл в соответствии с вашими установками — по умолчанию он расположен в папке data и имеет расширение *.err.

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

Если ошибка возникла позже и связана с неправильной работой вашего скрипта или нового тестового сайта, то к этому моменту журналы могут быть переполнены информацией, которые не имеют отношение к этому вопросы. В этом случае, идеально было бы сделать так:

Остановите веб-сервер (иначе невозможно отредактировать файлы журналов):

c:\Server\bin\Apache24\bin\httpd.exe -k stop
net stop mysql

Очистите содержимое журналов:

C:\Server\bin\Apache24\logs\error.log
C:\Server\data\DB\data\*.err

Вновь запустите веб-сервер:

c:\Server\bin\Apache24\bin\httpd.exe -k start
net start mysql

Сразу после этого выполните действие, которое приводит к ошибке. И опять же, сразу после этого скопируйте содержимое журналов ошибок и выложите здесь в комментариях.

При любой ошибке, если вы планируете попросить помощи, ваша задача как можно полнее собрать и предоставить информацию: какие действия приводят к ошибке, какой текст ошибки, что в журналах веб-сервера, устанавливали по инструкции ссылка на которую дана выше или нет (если нет, то как именно), желательно сделать скриншот. Помните, что вам помогают на добровольных началах и «выдавливать» из вас по каплям информацию никому не интересно. Если вы непонятно/неполно изложили свою ситуацию, то, извините, никто из кожи лезть не будет, чтобы во что бы то ни стало вам помочь — по возможности сразу излагайте проблему полно и ясно.

Ошибки Apache в Windows

Ошибка:

Никак не могу установить apache, выдаёт ошибку:

AH00558: httpd.exe: Could not reliably determine the server's fully qualified domain name, using fe80::7978:6c40:7af5:6ea5. Set the 'ServerName' directive globally to suppress this message

Решение:

Это предупреждение, а не ошибка. По идее, Apache должен всё равно работать. У вас http://localhost/ открывается?

Чтобы это предупреждение не выводилось (цитата из инструкции):

меняем

#ServerName www.example.com:80

на

ServerName localhost

Ошибка:

При запуске httpd я получаю следующее сообщение:

(OS 10048)Обычно разрешается только одно использование адреса сокета (протокол/сетевой адрес/порт). : AH00072: make_sock: could not bind to address 0.0.0.0:80

AH00451: no listening sockets available, shutting down

AH00015: Unable to open logs

В качестве ОС использую Windows 8.1

Решение:

Данная ошибка вызвана тем, что какая-то программа прослушивает порт 80, при этом Apache пытается использовать этот же порт. Но две программы не могут это делать одновременно – отсюда и ошибка.

Для того, чтобы узнать, какая программа занимает этот порт:

1) нажмите сочетание клавиш WIN + x

2) из открывшегося списка выберете «Командная строка (администратор)»

3) скопируйте туда:

netstat -ano

4) Найдите строку, содержащую «0.0.0.0:80», в этой строчке нас интересует PID, например, в моём случае это 2168

Теперь нам нужно сопоставить идентификатор процесса с конкретной программой. Чтобы сопоставить идентификатор процесса программы, выполните следующие действия:

5) Нажмите сочетание клавиш WIN + x (или CTRL + ALT + DELETE) и нажмите кнопку «Диспетчер задач».

6) Перейдите на вкладку «Процессы».

7) Если не имеется столбец PID, щелкните «Просмотр», «Выбрать столбцы» и установите флажок «PID» (в русской версии – «ИД процесса»).

8) Щелкните заголовок столбца, под названием «PID» сортировка процесс по PID. Вы сможете легко найти идентификатор процесса, и он соответствует программе, которая отображается в диспетчере задач.

После того, как найдёте программу, которая занимает этот порт, в зависимости от нужности этой программы и от возможности её настройки, можно:

а) удалить эту программу;

или

б) настроить её на использование другого порта;

или

в) настроить Apache на использование другого порта

п.с. на самом деле, могут быть другие причины данной ошибки (кроме занятости порта) – например, неправильная конфигурация сервера Apache, либо запрет в политиках безопасности ОС на использование этого порта. Но если Вы не вносили изменений «от себя» в конфигурацию сервера и в конфигурацию Windows, то дело, почти наверняка, в занятости порта другой программой.

Ответ пользователя с ошибкой: Проблема решена – порт занимал Скайп (есть у него такая бяка в настройках соединения – использовать порты 80 и 443 в качестве альтернативных, после того, как я отключил эту опцию, всё заработало).


Ошибка:

Сервер замедляется, перестаёт отвечать на запросы, хотя причин для этого нет – он не перегружен.

В логах появляется ошибка AH00341: winnt_accept: Asynchronous AcceptEx failed:

[Thu Jun 05 07:24:55.747090 2014] [mpm_winnt:notice] [pid 1784:tid 444] AH00455: Apache/2.4.9 (Win64) PHP/5.5.13 configured — resuming normal operations
[Thu Jun 05 07:24:55.747090 2014] [mpm_winnt:notice] [pid 1784:tid 444] AH00456: Apache Lounge VC11 Server built: Mar 16 2014 12:42:59
[Thu Jun 05 07:24:55.747090 2014] [core:notice] [pid 1784:tid 444] AH00094: Command line: 'c:\\Server\\bin\\Apache24\\bin\\httpd.exe -d C:/Server/bin/Apache24'
[Thu Jun 05 07:24:55.748090 2014] [mpm_winnt:notice] [pid 1784:tid 444] AH00418: Parent: Created child process 4952
[Thu Jun 05 07:24:55.957978 2014] [mpm_winnt:notice] [pid 4952:tid 388] AH00354: Child: Starting 64 worker threads.
[Thu Jun 05 07:26:16.695036 2014] [mpm_winnt:warn] [pid 4952:tid 1112] (OS 64)Указанное сетевое имя более недоступно.  : AH00341: winnt_accept: Asynchronous AcceptEx failed.
[Thu Jun 05 07:26:16.695036 2014] [mpm_winnt:warn] [pid 4952:tid 1112] (OS 64)Указанное сетевое имя более недоступно.  : AH00341: winnt_accept: Asynchronous AcceptEx failed.
[Thu Jun 05 07:26:48.250710 2014] [mpm_winnt:warn] [pid 4952:tid 1112] (OS 64)Указанное сетевое имя более недоступно.  : AH00341: winnt_accept: Asynchronous AcceptEx failed.
[Thu Jun 05 07:26:48.250710 2014] [mpm_winnt:warn] [pid 4952:tid 1112] (OS 64)Указанное сетевое имя более недоступно.  : AH00341: winnt_accept: Asynchronous AcceptEx failed.
[Thu Jun 05 07:29:27.137784 2014] [mpm_winnt:warn] [pid 4952:tid 1112] (OS 64)Указанное сетевое имя более недоступно.  : AH00341: winnt_accept: Asynchronous AcceptEx failed.
[Thu Jun 05 07:29:27.137784 2014] [mpm_winnt:warn] [pid 4952:tid 1112] (OS 64)Указанное сетевое имя более недоступно.  : AH00341: winnt_accept: Asynchronous AcceptEx failed.

Решение:

В файл httpd.conf нужно добавить следующие строки:

Для 2.2: 

Win32DisableAcceptEx 
EnableSendfile off 
EnableMMAP off 

Для 2.4: 

AcceptFilter http none 
AcceptFilter https none 
EnableSendfile off 
EnableMMAP off 

Ошибка:

работать с сервером не могу пока не запущу Apache Monitor.exe, сам Apache в службах значится -как запущенная служба, но через браузер (localhost и т.д.) никакой реакции, пока не произведу вышеуказанное действие, получается запускать апач монитор надо каждый раз для работы c сервером?

сделал чтоб консоль не закрывалась вот что пишет

C:\Server\bin\Apache24\bin>httpd.exe

AH00526: Syntax error on line 241 of C:/Server/bin/Apache24/conf/httpd.conf:

DocumentRoot must be a directory

Решение:

наиболее вероятная причина в том, что Вы ставите не на диск C, либо поменяли пути, названия папок, либо не создали папки, о которых говорится в статье. Суть в том, что Apache не видит каталога c:/Server/data/htdocs/

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


Ошибка:

Появилась проблема: до момента добавления строк

PHPIniDir "C:/Server/bin/PHP"
AddHandler application/x-httpd-php .php
LoadModule php5_module "C:/Server/bin/PHP/php5apache2_4.dll"

все работает, как надо. Но как только вставляю их в конец файла httpd.conf. выдает ошибку "the requested operation has failed". В логах

Restarting the server.
httpd.exe: Syntax error on line 532 of C:/Server/bin/Apache24/conf/httpd.conf: Cannot load C:/Server/bin/PHP/php5apache2_4.dll into server: \xcd\xe5 \xed\xe0\xe9\xe4\xe5\xed \xf3\xea\xe0\xe7\xe0\xed\xed\xfb\xe9 \xec\xee\xe4\xf3\xeb\xfc. 
[Mon Jul 06 02:38:24.688572 2015] [mpm_winnt:notice] [pid 2916:tid 392] AH00364: Child: All worker threads have exited.

Решение:

Необходимо установить Visual C++ Redistributable for Visual Studio 2017 (или любой другой более поздний).

Ошибки PHP в Windows

Ошибка:

При запуске команды "c:Server\bin\Apache24\bin\httpd.exe -k restart" машина выдала следующее:

httpd.exe: Syntax error on line 537 of C:/Server/Bin/Apache24/conf/httpd.conf: Cannot load C:/Server/bin/PHP/php7apache2_4.dll into server: \xed\xe5 \xed\xe0\xe9\xe4\xe5\xed\xf3\xea \xe0\xe7\xe0\xed\xed\xfb\xe9\xec\xee\xe4\xf3\xeb\xfc.

В папке PHP отсутствует файл php7apache2_4.dll, но имеются файлы php7.dll и php7phpdbg.dll.

Решение:

Вы скачали архив с версией для отладки. Посмотрите здесь, как правильно выбрать нужный файл.


Ошибка:

Вчера настроил всё, всё работает, но вот перенёс сайт и выдало ошибку:

Parse error: syntax error, unexpected 'new' (T_NEW) in C:\Server\data\htdocs\includes\joomla.php on line 840.

Решение:

Дело в версии PHP. Обновите движок вашего сайта. Если обновлений нет, то нужно править исходный код, подробности смотрите в статье «Решение проблемы на PHP 7: Parse error: syntax error, unexpected T_NEW».


Ошибка:

Fatal error: Uncaught Error: Call to undefined function mysql_connect() in C:\Server\data\htdocs\test.php:2 Stack trace: #0 {main} thrown in C:\Server\data\htdocs\test.php on line 2

вот что написано на test.php

<?php

$resource = mysql_connect('localhost','root', 'NFSmostwanted22');
if (!$resource) {
	die('Ошибка при подключении: ' . mysql_error());
}
echo 'Подключено успешно!';
mysql_close($resource);
?>

Ещё один вариант ошибки:

Создал в папке C:\Server\data\htdocs файл_test0000.html следующего содержания:

<html><head>
<link href="../css/phpMM.css" rel="stylesheet" type="text/css" />
</head><body>
<?php
$link1 = mysql_connect('localhost', 'root');
?>
</body></html>

и получаю сообщение:

Fatal error: Uncaught Error: Call to undefined function mysql_connect() in C:\Server\data\htdocs\_test0000.html:7 Stack trace: #0 {main} thrown in C:\Server\data\htdocs\_test0000.html on line 5

Решение:

Данное расширение — mysql_connect() — устарело, начиная с версии PHP 5.5.0, и удалено начиная с PHP 7.0.0. Используйте вместо него MySQLi или PDO_MySQL. Альтернативы для данной функции:

  • mysqli_connect()
  • PDO::__construct()

Ошибка:

Fatal error: Call to undefined function mb_detect_encoding() in C:\server\data\htdocs\phpmyadmin\libraries\php-gettext\gettext.inc on line 177

Решение:

Данная ошибка вызвана тем, что не подключено расширение mbstring. За это расширение в php.ini отвечает строчка

extension=php_mbstring.dll

Понятно, что для исправления ошибки нужно подключить расширение и перезапустить сервер (если не хотите ставить все расширения, как это описано в инструкции, то прежде чем выбрать, что Вам действительно нужно, лучше изучить описание каждого из них).

Тем не менее, теоретически, ошибка может быть вызвана тем, что из-за неправильной конфигурации Apache, файл php.ini вообще не «подхватывается» и PHP работает на дефолтных настройках, т.е. вообще без всех расширений. Но если это было бы так, то phpMyAdmin, в первую очередь пожаловался на то, что не определена другая функция (из-за отсутствия расширения отвечающего за связь с MySQL).


Ошибка:

 phpMyAdmin выдаёт ошибку http 500.

Ставлю сервер на Windows 7. Apache и MySQL встали нормально по Вашей инструкции. Дошёл до PHP. Скачал архив php-7.2.3-Win32-VC15-x64.zip. Добавил в конец файла httpd.conf строки по инструкции. Перезапускаю Apache.

C:\Users\Администратор>c:\Server\bin\Apache24\bin\httpd.exe -k restart

Получаю в командной строке сообщение:

httpd.exe: Syntax error on line 537 of C:/Server/Bin/Apache24/conf/httpd.conf: Cannot load C:/Server/bin/PHP/php7apache2_4.dll into server: %1 \xed\xe5 \xff\xe2
\xeb\xff\xe5\xf2\xf1\xff \xef\xf0\xe8\xeb\xee\xe6\xe5\xed\xe8\xe5\xec Win32.

В файле error.log появились строчки:

[Sun Mar 25 10:22:52.208678 2018] [mpm_winnt:notice] [pid 2608:tid 292] AH00455: Apache/2.4.33 (Win64) configured -- resuming normal operations
[Sun Mar 25 10:22:52.224278 2018] [mpm_winnt:notice] [pid 2608:tid 292] AH00456: Apache Lounge VC15 Server built: Mar 18 2018 12:58:47
[Sun Mar 25 10:22:52.224278 2018] [core:notice] [pid 2608:tid 292] AH00094: Command line: 'c:\\Server\\bin\\Apache24\\bin\\httpd.exe -d C:/Server/Bin/Apache24'
[Sun Mar 25 10:22:52.224278 2018] [mpm_winnt:notice] [pid 2608:tid 292] AH00418: Parent: Created child process 2696
[Sun Mar 25 10:22:52.583079 2018] [mpm_winnt:notice] [pid 2696:tid 180] AH00354: Child: Starting 64 worker threads.

"Syntax error in 524 line Cannont load "C:/Server/bin/PHP/php7apache2_4.dll" to server"

Решение

То был другой архив: php-7.2.3-Win32-VC15-x86.zip.

Скачал х64 и все заработало!


Ошибка:

возникла странная ошибка, причин которой понять не могу.

Стоит только добавить в каталог к PHP файл php.ini с любыми настройками, перестают выполняться php-скрипты. Убираю файл, перезапускаю Apache – работает (естественно до момента работы с базами данных например, тогда начинает просить расширения)

Решение:

Ответил сам пользователь: Оказалось, что в конфиге php по умолчанию выключена поддержка коротких тегов . Стоило ее включить и сразу все заработало 🙂


Ошибка:

В логах веб-сервера при каждом запуске Apache появляются ошибки:

PHP Warning: PHP Startup: Unable to load dynamic library 'C:\\Server\\bin\\PHP\\ext\\php_curl.dll' - \xef\xbf\xbd\xef\xbf\xbd \xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd \xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd \xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd.\r\n in Unknown on line 0

PHP Warning: PHP Startup: Unable to load dynamic library 'C:\\Server\\bin\\PHP\\ext\\php_intl.dll' - \xef\xbf\xbd\xef\xbf\xbd \xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd \xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd \xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd.\r\n in Unknown on line 0

PHP Warning: PHP Startup: Unable to load dynamic library 'C:\\Server\\bin\\PHP\\ext\\php_ldap.dll' - \xef\xbf\xbd\xef\xbf\xbd \xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd \xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd \xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd.\r\n in Unknown on line 0

PHP Warning: PHP Startup: Unable to load dynamic library 'C:\\Server\\bin\\PHP\\ext\\php_pdo_pgsql.dll' - \xef\xbf\xbd\xef\xbf\xbd \xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd \xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd \xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd.\r\n in Unknown on line 0

PHP Warning: PHP Startup: Unable to load dynamic library 'C:\\Server\\bin\\PHP\\ext\\php_pgsql.dll' - \xef\xbf\xbd\xef\xbf\xbd \xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd \xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd \xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd.\r\n in Unknown on line 0

Как их исправить?

Решение:

Вам нужно добавить путь до PHP в переменную окружения PATH в Windows.


Ошибка:

При использовании некоторых скриптов и CMS возникает ошибки:

Fatal error: Call to undefined function curl_multi_init() in …

Или:

Ошибка curl: SSL certificate problem: unable to get local issuer certificate

Решение:

Причина ошибки в том, что cURL настроена неправильно.

Чтобы cURL работала в Apache на Windows вам нужно:

1) Обязательно добавить PHP директорию в PATH (системные переменные среды). Как это сделать сказано чуть выше или здесь https://hackware.ru/?p=21#11

2) В файле C:\Server\bin\PHP\php.ini должна быть раскомментирована строка extension=curl

3) Необходимо скачать файл https://curl.haxx.se/ca/cacert.pem, затем в папке C:\Server\ создать новую папку с именем certs и в эту новую папку (C:\Server\certs\) переместите скаченный файл.

4) В файле C:\Server\bin\PHP\php.ini найдите строку

;curl.cainfo =

И замените её на

curl.cainfo = C:\Server\certs\cacert.pem

5) Перезапустите сервер.


Ошибка:

 

Выполнила 1-6 и также увидела

Fatal error: Uncaught Error: Call to undefined function mb_detect_encoding() in C:\Server\data\htdocs\phpmyadmin\libraries\php-gettext\gettext.inc:177 Stack trace: #0 C:\Server\data\htdocs\phpmyadmin\libraries\php-gettext\gettext.inc(282): _encode('The %s extensio…') 
#1 C:\Server\data\htdocs\phpmyadmin\libraries\php-gettext\gettext.inc(289): _gettext('The %s extensio…') 
#2 C:\Server\data\htdocs\phpmyadmin\libraries\core.lib.php(306): __('The %s extensio…') 
#3 C:\Server\data\htdocs\phpmyadmin\libraries\core.lib.php(961): PMA_warnMissingExtension('mbstring', true) 
#4 C:\Server\data\htdocs\phpmyadmin\libraries\common.inc.php(102): PMA_checkExtensions() 
#5 C:\Server\data\htdocs\phpmyadmin\index.php(13): require_once('C:\\Server\\data\\…') 
#6 {main} thrown inC:\Server\data\htdocs\phpmyadmin\libraries\php-gettext\gettext.inc on line 177

При этом extension_dir = "C:\Server\bin\PHP\ext\" прописано именно так.

На других форумах пишут, что должно быть активно mbstring. Но мы его раскомментировали. Либо надо ещё что-то сделать ?

Решение:

После внесения изменений в файлы настроек нужно перезапустить сервер.

Если сервер перезапустили, а ошибка осталась, то одним из случаев может быть когда файл php.ini не подхватывается сервером. У меня получается так сделать, если при настройке Apache я добавляю строки

AddHandler application/x-httpd-php .php
LoadModule php7_module "C:/Server/bin/PHP/php7apache2_4.dll"

А строку

PHPIniDir "C:/Server/bin/PHP"

не добавляю или пишу её с ошибкой.

Чтобы убедиться, что дело именно в том, что не подхватывается файл php.ini, выполните phpinfo (); (в статье описано, как это сделать) и найдите там Loaded Configuration File. Если запись такая:

То дело именно в этом.

Правильно должно быть так:

Loaded Configuration File C:\Server\bin\PHP\php.ini

Ответ пользователя: Оказалось, что php.ini-development надо было переименовать в просто php.


Ошибка:

Что-то у меня проблема с кодировкой. Если utf-8, то нормально. А 1251 странно глючит.

Все вроде нормально. Упростил код до безобразия 

<html>
  <head>
<META http-equiv="Content-Type" content="text/html; charset=windows-1251">
 <title>Проверка кодировки</title>
</head>
<body>
    <h1>Тестовый файл для проверки кодировки</h1>
</body>
</html>

Если файлу дать расширение html то в норме, а рсширение php – не работает, кракозябры идут, сам автоматом в utf перебрасывает.

AddDefaultCharset off
AddDefaultCharset WINDOWS-1251

не помогает

Решение:

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

Установка кодировки в коде файла или в файле .htaccess влияет только на то, как браузер будет трактовать этот файл, но не конвертирует его в другую кодировку.

То есть, допустим, ваш файл реально сохранён в кодировке utf-8. Вы указываете в качестве кодировки windows-1251. И это работает: браузер трактует ваш файл как windows-1251, но показывает крякозяблы, поскольку на самом-то деле это utf-8.

Поэтому начните с того, что проверьте кодировку файла и при необходимости пересохраните в нужной кодировке.

Если кодировка правильная, то для PHP файла безотказно работает

header('Content-Type: text/html; charset=utf-8');

Эта функция отправляет нужную кодировку в заголовке. Она должна идти до любого вывода текста на экран. Кодировку поменяйте на свою.

У меня есть целая статья про кодировку «Решение проблем неправильной кодировкой веб-страницы». Там в конце показано, как проверить HTTP заголовки с помощью cURL, которые отправляются сервером.

Программа curl есть и в Windows, поэтому если у вас прям ничего не получится, то напишите, что выводит curl.

Ошибки MySQL/MariaDB в Windows

Ошибка:

Ошибки InnoDB: Operating system error number 87 in a file operation и File .\ib_logfile101: 'aio write' return OS error 187.

Решение:

Если инициализация завершилась неудачей и в папке C:\Server\data\DB\data\ недостаёт файлов, а в логе ошибок C:\Server\data\DB\data\*.err вы видите примерно следующие записи:

[ERROR] InnoDB: Operating system error number 87 in a file operation
[ERROR] InnoDB: File .\ib_logfile101: 'aio write' return OS error 187.
[ERROR] InnoDB: Cannot continue operation

То для решения этой проблемы удалите всё содержимое папки C:\Server\data\DB\data\ и в файл my.ini добавьте ещё одну строчку:

innodb_flush_method=normal

Теперь инициализируйте MySQL ещё раз:

C:\Server\bin\mysql-8.0\bin\mysqld --initialize-insecure --user=root
C:\Server\bin\mysql-8.0\bin\mysqld --install
net start mysql

Ошибка:

Исправление MySQL после неудачной инициализации

Если вы что-то сделали не так при инициализации (например, указали не все рекомендуемые опции), то при последующей инициализации у вас тоже ничего не получится и в журнале ошибок будет примерно следующее:

[ERROR] [MY-010457] [Server] --initialize specified but the data directory has files in it. Aborting.
[ERROR] [MY-013236] [Server] Newly created data directory c:\Server\data\DB\data\ is unusable. You can safely remove it.
[ERROR] [MY-010119] [Server] Aborting

Решение:

В этом случае нужно остановить MySQL сервер:

net stop mysql
c:\Server\bin\mysql-8.0\bin\mysqld --remove

Очистите содержимое папки C:\Server\data\DB\data\ (удалите всё из неё).

Теперь инициализируйте MySQL ещё раз:

C:\Server\bin\mysql-8.0\bin\mysqld --initialize-insecure --user=root
C:\Server\bin\mysql-8.0\bin\mysqld --install
net start mysql

Ошибка:

Подскажите, пожалуйста, почему при инициализации MySQL 8.0.13 в каталоге C:\Server\data\DB\data\ ничего не появляется. Все файлы появляются в каталоге C:\Server\bin\mysql-8.0\data. В файле ошибок SVO5195.err (находится в C:\Server\bin\mysql-8.0\data) следующая информация:

2019-01-04T10:01:56.830374Z 0 [System] [MY-013169] [Server] C:\Server\bin\mysql-8.0\bin\mysqld.exe (mysqld 8.0.13) initializing of server in progress as process 8860
2019-01-04T10:02:02.311887Z 5 [Warning] [MY-010453] [Server] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option.
2019-01-04T10:02:05.511185Z 0 [System] [MY-013170] [Server] C:\Server\bin\mysql-8.0\bin\mysqld.exe (mysqld 8.0.13) initializing of server has completed

Решение:

Папка C:\Server\data\DB\data\ прописана в файле my.ini.

Получается причина ошибки только одна: вы или не создали файл my.ini, или создали его неправильно, или создали его не в том месте, или не записали туда директиву с C:\Server\data\DB\data\ – то есть что-то такое.

Ответ пользователя: Разобрался. Причина была в том, что я создавал файл my.ini.txt вместо my.ini. Не обратил внимания на отображение расширений в Проводники. Ошибка – глупая, но, думаю, сократит многим новоначальным время, если её указать.


Ошибка:

Я устанавливал себе MariaDB по вашей статье и возникла ошибка 1067. Что мне делать?

Решение:

Любые ошибки возникают только если хоть в чём-то отойти от мануала. Вы пропустили это:

Переместите папку C:\Server\bin\mariadb\data\ в папку C:\Server\data\DB\.


Ошибка:

Захожу http://localhost/phpmyadmin/index.php ввожу лог root а мне пишет ошибка — Невозможно подключиться к серверу MySQL.

Решение:

Такая ошибка возникает если не установлен или не запущен сервер MySQL. Внимательнее изучите инструкции https://hackware.ru/?p=21 и https://hackware.ru/?p=7033


Ошибка:

При установке Mysql когда я набираю в консоль mysql -u root, выдается ошибка ERROR 2003, can't connect to mysql (10061), добавлю что открыл порт 3306 в брандмауре

Решение:

Это точно такая же ситуация как и в предыдущей ошибке: она возникает если не установлен или не запущен сервер MySQL. Внимательнее изучите инструкции https://hackware.ru/?p=21 и https://hackware.ru/?p=7033


Ошибки phpMyAdmin в Windows

Ошибка:

Добавляю http://localhost/phpmyadmin/setup/

вместо панели управления вижу код:

<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* Front controller for setup script
*
* @package PhpMyAdmin-Setup
* @license http://www.gnu.org/licenses/gpl.html GNU GPL 2.0
*/

/**
* Core libraries.
*/
require './lib/common.inc.php';

$page = filter_input(INPUT_GET, 'page');
$page = preg_replace('/[^a-z]/', '', $page);
if ($page === '') {
$page = 'index';
}
if (!file_exists("./setup/frames/$page.inc.php")) {
// it will happen only when entering URL by hand, we don't care for these cases
PMA_fatalError(__('Wrong GET file attribute value'));
}

и т. д.

Решение:

Сервер Apache работает без PHP

Ответ пользователя: Перезапустил и обновил браузер все получилось


Ошибка:

Столкнулся вот с какой проблемой – после расширения возможностей phpmyadmin и попытке войти под пользователем pma, выскакивает ошибка: #1045 Невозможно подключиться к серверу MySQL. Под root всё в порядке. Если знаете в чем проблема, подскажите пожалуйста как её исправить?! Хочется взглянуть на эти дополнительные возможности phpmyadmin)

Решение:

Вам не нужно заходить в phpMyAdmin от имени пользователя pma. Когда Вы всё настроили и зашли под рутом, то всё уже работает. Просто, на самом деле, в phpMyAdmin мало что меняется. Чтобы убедиться, что доп. возможности работают, кликните по какой-нибудь базе данных и посмотрите, есть ли у Вас в верхнем меню Дизайнер и Слежение. Если есть, значить всё работает.


Ошибка:

Apache, PHP и MySQL установились без проблем, но когда я дошла до 6-го пункта (phpMyAdmin), получила сообщение об ошибке:

Fatal error: Call to undefined function mb_detect_encoding() in C:\Server\data\htdocs\phpmyadmin\libraries\php-gettext\gettext.inc on line 177.

Я читала комментарий выше об этой же ошибке, но у меня все нужные строки в php.ini раскомментированы, все делала четко по инструкции. Но все равно ошибка.

С чем это может быть связано и как исправить?

Решение:

перезагрузила – все работает)))


Ошибка:

У меня при установке phpMyAdmin возникла проблема:

Добавить новый сервер
Warning: Illegal	string	offset	'Servers/1/auth_type'	in	C:\Server\data\htdocs\pma\libraries\configWalidator.class.php	on	line 312
Warning: Illegal	string	offset	'Servers/1/auth_type'	in	C:\Server\data\htdocs\pma\libraries\configWalidator.class.php	on	line 319
Warning: Illegal	string	offset	'Servers/1/auth_type'	in	C:\Server\data\htdocs\pma\libraries\configWalidator.class.php	on	line 328
Warning: Illegal	string	offset	'Servers/1/auth_type'	in	C:\Server\data\htdocs\pma\libraries\configWalidator.class.php	on	line 336
Warning: Illegal string offset 'Servers/1/pmadb' in C:\Server\data\htdocs\pma\libraries\configWalidator.class.php on line 371 Warning: Illegal string offset 'Servers/1/controluser' in C:\Server\data\htdocs\pma\libraries\configWalidator.class.php on line 376 Warning: Illegal string offset 'Servers/1/controlpass' in C:\Server\data\htdocs\pma\libraries\configWalidator.class.php on line 381 Warning: Illegal string offset 'Servers/1/connect_type' in C:\Server\data\htdocs\pma\libraries\configWalidator.class.php on line 388 Warning: Illegal string offset 'Servers/1/hosf in C:\Server\data\htdocs\pma\libraries\configWalidator.class.php on line 389 Warning: Illegal string offset 'Servers/1/port' in C:\Server\data\htdocs\pma\libraries\configWalidator.class.php on line 389 Warning: Illegal string offset 'Servers/1/socket' in C:\Server\data\htdocs\pma\libraries\configWalidator.class.php on line 390 Warning: Illegal string offset 'Servers/1/controluser' in C:\Server\data\htdocs\pma\libraries\configWalidator.class.php on line 390 Warning: Illegal string offset 'Servers/1/controlpass' in C:\Server\data\htdocs\pma\libraries\configWalidator.class.php on line 391
(&) Предупреждение_______________________________________________________________________________________________________
Данные формы содержат ошибки
Проверка данных на соответствие и возвращение в изначальное значение при наличии ошибки
Хранение конфигурации
► Не удалось соединиться с сервером базы данных! - mysqli_connect() expects parameter 5 to be long, string given
Игнорировать ошибки
Показать форму

Решение:

Если так, то это ошика исключительно версии phpMyAdmin 4.3.2. Тикет ошибки: http://sourceforge.net/p/phpmyadmin/bugs/4653/

Очевидные решения:

1) пользоваться phpMyAdmin из ветки 4.2,

2) подождать пока починят.

Вопросы и ответы по веб-серверу в Windows

Вопрос:

Я хочу потренироваться в администрировании сайта на WordPress или Я изучаю программирование PHP для WordPress, как мне установить эту CMS на свой локальный сервер в Windows?

Ответ:

Смотрите статью «Как установить WordPress в Windows».

Вопрос:

Могут ли мой веб-сервер взломать?

Ответ:

Да, по умолчанию безопасности веб-сервера не уделено никакого внимания — задача минимум, заставить его работать на Windows. Сразу после успешной установки и проверки, настоятельно рекомендуется перейти ко второй стадии: «Как защитить веб-сервер Apache от взлома в Windows».

Вопрос:

У меня есть уже готовый сайт всё настроил.как сделать чтоб его стало видно из интернета?

Ответ:

Здесь подробная инструкция: "Как веб-сервер на своём компьютере сделать доступным для других".


Вопрос:

Как настроить поддомены и виртуальные хосты?

Ответ:

Подробная инструкция «Настройка Apache в Windows» в разделе Подключение виртуальных хостов Apache в Windows.


Вопрос:

Скажите пожалуйста где вы взяли файл C:/Server/bin/PHP/php5apache2_4.dll

А то у меня ругается апач на его отсутствие

Ответ:

Этот файл с самого начала есть в архиве php-5.5.9-Win32-VC11-x64.zip , который скачиваю с официального сайта.

Если в Вашем архиве нет этого файла, скорее всего, Вы скачали или старую версию (5.4.*, 5.3.*) или Non-Thread Safe (NTS) версию.

Если файл C:/Server/bin/PHP/php5apache2_4.dll присутствует, но Apache выдаёт ошибку, значит проблема в настройке Apache.

Ссылки на «правильный» PHP:

64-бит: http://windows.php.net/downloads/releases/php-5.5.9-Win32-VC11-x64.zip

32-бит: http://windows.php.net/downloads/releases/php-5.5.9-Win32-VC11-x86.zip

(ссылки устарели)


Вопрос:

А что, если после установки MySQL 5.4.16 не появилось окошко настроек «MySQL Server Instance Configuration Wizard»?

Что делать? Как настраивать?

Ответ:

Значит вы скачали не установщик, а zip-архив. Лично мне ручная установка MySQL кажется более простой и гибкой. Как это сделать описано здесь.


Вопрос:

Как поменять пароль для MySQL?

Ответ:

Для задания нового пароля MySQL в командной строке:

c:\Server\bin\mysql-5.6\bin\mysql -u root mysql
mysql> update user set Password=PASSWORD('новый пароль') WHERE User='root';
mysql> exit
net stop mysql
net start mysql

Вопрос:

Как прописать переменные среды для MySQL в Windows?

Ответ:

Откройте «Мой компьютер» (у меня называется «Этот компьютер» – не суть). Там выберите «Свойства системы». Дальше выберите «Дополнительные параметры системы». В открывшемся окне на вкладке «Дополнительно» нажмите «Переменные среды». Там два окошечка, смотрите на то, которое называется «Системные переменные». Находите переменную «Path». Кликаете два раза на ней. В «Значение переменной» уже много-много чего понаписано. Добавляете туда (например, вставьте в самое начало) строку (если у вас MySQL):

C:\Server\bin\mysql-8.0\

Или (если у вас MariaDB):

C:\Server\bin\mariadb\

Нажмите везде ОК, чтобы закрылись все окна. Сразу, даже без перезагрузки можно работать в командной строке и вызывать MySQL как mysql – полный путь прописывать до бинарника не нужно.


Вопрос:

Посоветуйте хостинг

Ответ:

Хостинг, которым пользуется автор этих инструкций на протяжении 10 лет и где размещены этот и другие сайты с инструкциями: здесь. Для получения бесплатного месяца и других бонусов, указывайте промокод b33e0e2f


Совет:

Хотите навсегда забыть о всех проблемах с сервером? Хотите просто радоваться развитию вашего сайта и не думать ни о каких технических проблемах? Хотите получить надёжных друзей в виде высококвалифицированной и быстрой технической поддержки? Лучший хостинг от лидеров рынка по доступным ценам. Тарифы. Чтобы получить бесплатный месяц веб-хостинга, другие бонусы и подарки, указывайте промокод b33e0e2f

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *