1 (изменено: Юрий Иванович, 2010-12-12 10:28:45)

Тема: Запуск сервера пакетным файлом

Я пенсионер и всего год занимаюсь  вопросами Вебстроительства и можно сказать, что я полный "Чайник" в
этих вопросах, но мне это очень нужно и интересно. Посетил множество форумов, но безультатно
Суть проблемы в следующем.
Скачал весь дистрибутив для локального хоста и установил по ссылке:
http://php-myadmin.ru/learning/instrument-apache.html
на систему Windows XP Pfofessional, 2002, Pac 3
Состав сервера:
MySQL -essential-5.1.53 Win32
PHP-5.3.3
Apache-2.2.17
PHP MYAdmin-3.3.8.1
При запуске сервера при помощи файла start-webserv.bat почти в самом начале происходит остановка
и сервер сообщает "системная ошибка 1067, неожиданная остановка" и ссылается на файл PHP пакета
php5ts.dll   
В C:\wserver\error.log пишется следующее: [warn] pid file C:/Program Files/Apache Software Foundation/Apache2.2/logs/httpd.pid overwritten -- Unclean shutdown of previous Apache run?
В httpd.pid - ошибка 404 или иногда м.б другая. При запуске Апач с помощью команды СТАРТ идёт сообщение
The requested operation has faied
Я много раз переустанавливал программы потратил уже почти неделю, но с места не сдвинулся.
Спасибо всем, кто откликнется на мою просьбу.
Ю.И.

Chichaco

2 (изменено: Юрий Иванович, 2010-12-11 20:57:55)

Re: Запуск сервера пакетным файлом

Победа!
Всё дело в том, что в Windows уже стоит свой PHP и в переменных среды уже есть путь C:\PHP, а нам надо добавить путь к своему (установленному PHP5). Затем надо папку с новым PHP переименовать в PHP5 или как вам угодно и, соответственно, в во всех конфигурационных файлах сервера надо поменять пути с  C:\ xxx\PHP на C:\ xxx\PHP5.
Однако появилась другая ошибка. При запуске phpmyadmin он пишет: "Невозможно загрузить расширение mysqli! Проверьте настройки PHP." У меня  в php.ini присутствует extension=php_mysqli.dll, где искать дальше пока не знаю. Посоветуйте.
Спасибо, Ю.И.

Chichaco

3

Re: Запуск сервера пакетным файлом

Юрий Иванович сказал:

Невозможно загрузить расширение mysqli! Проверьте настройки PHP

1) Корень PHP должен быть прописан в PATH и находится перед путем к MySQL/bin.
2) В php.ini должны быть раскомментированы строки; библиотеки должны существовать:
extension=php_mysql.dll
extension=php_mysqli.dll
3) В php.ini должен быть прописан каталог с библиотеками расширений.
extension_dir = "C:/php/ext"
4) В корне PHP должна быть библиотека libmysql.dll.
5) Поищите в системе дубль библиотеки libmysql.dll. Если найдете ее в системном каталоге, вроде C:/Windows, то переименуйте и перезапустите компьютер.

Если в PATH будет два пути к PHP, то возникнет конфликт подгружаемых библиотек. PHP на компьютере должен быть только один.

Re: Запуск сервера пакетным файлом

Hanut сказал:
Юрий Иванович сказал:

Невозможно загрузить расширение mysqli! Проверьте настройки PHP

1) Корень PHP должен быть прописан в PATH и находится перед путем к MySQL/bin.
2) В php.ini должны быть раскомментированы строки; библиотеки должны существовать:
extension=php_mysql.dll
extension=php_mysqli.dll
3) В php.ini должен быть прописан каталог с библиотеками расширений.
extension_dir = "C:/php/ext"
4) В корне PHP должна быть библиотека libmysql.dll.
5) Поищите в системе дубль библиотеки libmysql.dll. Если найдете ее в системном каталоге, вроде C:/Windows, то переименуйте и перезапустите компьютер.

Если в PATH будет два пути к PHP, то возникнет конфликт подгружаемых библиотек. PHP на компьютере должен быть только один.

п.п.1,2,3 - такие же, только корневая папка PHP5 и соответственно прописаны все пути.
Библиотека есть, дублей её в системе Windows не нашёл, из PATH убрал путь к PHP . оставил только PHP5.
Ничего не меняется. В httpd.conf у меня прописано:

#Подключание PHP, как модуля
LoadModule php5_module "C:/php5/php5apache2_2.dll"
PHPIniDir "C:\php5\" 
(обратите внимание на слежи), если я меняю их на противоположные, то появляется таже ошибка с которой начал тему. Может быть мне теперь вернуться к корню PHP от PHP5?

Расширения не трогал, они такие:
extension=php_mysql.dll
extension=php_mysqli.dll

Спасибо.

Chichaco

5

Re: Запуск сервера пакетным файлом

Советую поставить PHP 5.2, иначе мне будет сложно вам помочь.

Попробуйте так:
PHPIniDir "C:/php5"

Re: Запуск сервера пакетным файлом

Hanut сказал:

Советую поставить PHP 5.2, иначе мне будет сложно вам помочь.

Попробуйте так:
PHPIniDir "C:/php5"

Если я делаю так, то  происходит всё как в первом сообщении - Апач не запускается.

На счёт PHP 5.2, я начинал с PHP 5.2.14, было тоже самое. Похоже PHP не запускается, а в моём варианте

PHPIniDir "C:\php5\"  - (скорее всего это не правильно) -

запускается как-то частично. Файл phpinfo.php (ввожу в стрку браузера)  выводит всю информацию о сервере, и phpmyadmin тоже запусккется, но с ошибкой, как в моём втором сообщении (не может запустить библиотеку php_mysqli.dll)

Спасибо.

Chichaco

7

Re: Запуск сервера пакетным файлом

Юрий Иванович сказал:

Если я делаю так, то  происходит всё как в первом сообщении - Апач не запускается.

Ищите в системе дубли php.ini. Если найдете, то переименуйте и перезапустите Apache.

Эту строку надо оставить в таком виде:
PHPIniDir "C:/php5"

Смотрите в phpinfo() значение Loaded Configuration File, чтобы там не было none. Пока надо добиться загрузки правильного конфигурационного файла php.ini, остальное уже последует.

Re: Запуск сервера пакетным файлом

Ищите в системе дубли php.ini. Если найдете, то переименуйте и перезапустите Apache.

Эту строку надо оставить в таком виде:
PHPIniDir "C:/php5"

Смотрите в phpinfo() значение Loaded Configuration File, чтобы там не было none. Пока надо добиться загрузки правильного конфигурационного файла php.ini, остальное уже последует.

Сейчас дублей нет, в системе только один файл php.ini.

При перезапуске Апач всё по старому - останавливается и выдаёт ошибку 1067.

В phpinfo() я попадаю только закомментировав строку  PHPIniDir "C:/php5".

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

Может выложить мои конфигурационные файлы? Только скажите.

Спасибо, с уважением, Ю.И.

Chichaco

9

Re: Запуск сервера пакетным файлом

Юрий Иванович сказал:

Может выложить мои конфигурационные файлы?

Да, отошлите httpd.conf на hanut@php-myadmin.ru

Покажите в каком виде у вас PATH.

Re: Запуск сервера пакетным файлом

Hanut сказал:
Юрий Иванович сказал:

Может выложить мои конфигурационные файлы?

Да, отошлите httpd.conf на hanut@php-myadmin.ru

Покажите в каком виде у вас PATH.


%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Program Files\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\DTS\Binn\;C:\Program Files\QuickTime\QTSystem\;c:\PHP5;c:\Program Files\MySQL\MySQL Server 5.1\bin

Это мой  PATH

Спасибо,Ю.И.

Chichaco

11

Re: Запуск сервера пакетным файлом

В httpd.conf ошибок нет.

Полностью удалите PHP и замените этим дистрибутивом: http://windows.php.net/downloads/releas … C6-x86.zip

В PATH попробуйте поставить путь к PHP самым первым в строке (c:\PHP5;%SystemRoot%\system32; и т. д.), после чего перезапустите компьютер.

Re: Запуск сервера пакетным файлом

Спасибо, всё сделаю и завтра отпишусь.
Ю.И.

Chichaco

Re: Запуск сервера пакетным файлом

Огромное спасибо, всё заработало. Только не понятно почему с PHP5.3.3 не работал,  настройки такие же?

Теперь вопрос другой, может быть не совсем в тему форума, но всё же.

Перекачал свой сайт на новый локальный хост (сайт сделан был в Денвере 3 и он работает в сети), а Апач пишет, что некоторые переменные типа $result не защищены.
Пишет следующее:

Notice: Use of undefined constant result2 - assumed 'result2' in C:\wserver\localhost\www\vsiosam.ru\blocks\leftdiv.php on line 9

? ???? ??????? HTML - ??????

Видимо надо изменить настройки php.ini и сделать их такими же как на хостинге, т.е. стандартными, а где их взять стандартные настойки?

Сасибо, Ю.И.

Chichaco

14

Re: Запуск сервера пакетным файлом

Юрий Иванович сказал:

Видимо надо изменить настройки php.ini и сделать их такими же как на хостинге,

Нет, надо исправить ошибку в скрипте. Покажите отрывок кода, который приводит к ошибке.

Со временем, по установке PHP 5.3 будет обновление статьи "Инструментарий веб-разработчика".

Re: Запуск сервера пакетным файлом

Это скрипт блока leftdiv.php

<h2>Статьи по категориям</h2>
<ul>  
 <?php
    $result2 = mysql_query("SELECT * FROM categories",$db);

if (!result2)
{
echo "<p>Запрос на выборку данных из БД не прошёл. Сообщите об этом администратору admin@vsiosam.ru <br><strong>Код ошибки:</strong></p>";

exit(mysql_error());
}

if (mysql_num_rows($result2) > 0)
{
$myrow2 = mysql_fetch_array($result2);

do
{
printf ("<li><a href='view_cat.php?cat=%s'>%s</a></li>",$myrow2["id"],$myrow2["title"]);
}
while ($myrow2 = mysql_fetch_array($result2));
}

else
{
echo "<p>Информация по запросу не может быть извлечена, в таблице нет записей</p>";

exit();
}                    
    ?>
                </ul>

А информацию он берёт изview_cat.php

<?php  include ("blocks/bd.php");
if (isset($_GET['cat'])) {$cat = $_GET['cat'];} 
if (!isset($cat)) {$cat = 1;}
/* Проверяем, является ли переменная числом */
if (!preg_match("|^[\d]+$|", $cat)) {
exit ("<p>Неверный формат запроса! Проверьте URL!");
}

$result = mysql_query("SELECT * FROM categories WHERE id='$cat'",$db);

if (!result)
{
echo "<p>Запрос на выборку данных из БД не прошёл. Сообщите об этом администратору admin@vsiosam.ru <br><strong>Код ошибки:</strong></p>";

exit(mysql_error());
}

if (mysql_num_rows($result) > 0)
{
$myrow = mysql_fetch_array($result);
}

else
{
echo "<p>Информация по запросу не может быть извлечена, в таблице нет записей</p>";

exit();
}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "[url]http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd[/url]">
<!--
Design by Yuri Maslakov, 2010, yurivmas@yandex.ru
-->
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title><?php echo "Статьи категории - $myrow[title]";?></title>
<meta name="keywords" content="<?php echo $myrow["meta_k"];?>" />
<meta name="Description" content="<?php echo $myrow["meta_d"];?>" />
<link href="default.css" rel="stylesheet" type="text/css" media="screen" />

</head>
<body>
<!-- start header -->
<?php include ("blocks/header.php");?>
<!-- end header -->
<!--start menu-->
  <?php include ("blocks/nav.php");?>
<!--end menu-->
<div id="wrapper">
    <!-- start page -->
    <div id="page">
    
    <div id="page-bg">
        <?php include ("blocks/leftdiv.php");?>
        <!-- start content -->
        <div id="content">
                 <div class="post">
                
                <?php 
                echo $tnx->show_link(1); // выводим первую ссылку
                echo $myrow["text"];
                
                    $result77 = mysql_query("SELECT str FROM options", $db);
$myrow77 = mysql_fetch_array($result77);
$num = $myrow77["str"];
// Извлекаем из URL текущую страницу
@$page = $_GET['page'];
// Определяем общее число сообщений в базе данных
$result00 = mysql_query("SELECT COUNT(*) FROM data WHERE cat='$cat'");
$temp = mysql_fetch_array($result00);
$posts = $temp[0];
// Находим общее число страниц
$total = (($posts - 1) / $num) + 1;
$total =  intval($total);
// Определяем начало сообщений для текущей страницы
$page = intval($page);
// Если значение $page меньше единицы или отрицательно
// переходим на первую страницу
// А если слишком большое, то переходим на последнюю
if(empty($page) or $page < 0) $page = 1;
  if($page > $total) $page = $total;
// Вычисляем начиная с какого номера
// следует выводить сообщения
$start = $page * $num - $num;
// Выбираем $num сообщений начиная с номера $start    
                
        $result = mysql_query("SELECT id,title,description,date,author,mini_img,view FROM data WHERE cat='$cat' ORDER BY date LIMIT $start, $num",$db);

if (!result)
{
echo "<p>Запрос на выборку данных из БД не прошёл. Сообщите об этом администратору admin@vsiosam.ru <br><strong>Код ошибки:</strong></p>";

exit(mysql_error());
}

if (mysql_num_rows($result) > 0)
{
$myrow = mysql_fetch_array($result);

do
{
printf ("<table align='center' class='post1'>
                <tr>
                <td class='post_title'>
                <p class='post_name'><img class='mini' align='left' src='%s'><a href='view_post.php?id=%s'> %s</a></p>
                <p class='post_adds'>Дата добавления: %s</p>
                <p class='post_adds'>Автор: %s</p></td>
                </tr>
               <tr>
                <td>%s <p class='post_view'>Просмотров: %s</p></td>
              </tr>
            </table><br>",$myrow["mini_img"],$myrow["id"],$myrow["title"],$myrow["date"],$myrow["author"],$myrow["description"],$myrow["view"]);
}
while ($myrow = mysql_fetch_array($result));

                 echo $tnx->show_link(1); // выводим вторую ссылку

// Проверяем нужны ли стрелки назад
if ($page != 1) $pervpage = '<a href=view_cat.php?cat='.$cat.'&page=1>Первая</a> | <a href=view_cat.php?cat='.$cat.'&page='. ($page - 1) .'>Предыдущая</a> | ';
// Проверяем нужны ли стрелки вперед
if ($page != $total) $nextpage = ' | <a href=view_cat.php?cat='.$cat.'&page='. ($page + 1) .'>Следующая</a> | <a href=view_cat.php?cat='.$cat.'&page=' .$total. '>Последняя</a>';

// Находим две ближайшие станицы с обоих краев, если они есть
if($page - 5 > 0) $page5left = ' <a href=view_cat.php?cat='.$cat.'&page='. ($page - 5) .'>'. ($page - 5) .'</a> | ';
if($page - 4 > 0) $page4left = ' <a href=view_cat.php?cat='.$cat.'&page='. ($page - 4) .'>'. ($page - 4) .'</a> | ';
if($page - 3 > 0) $page3left = ' <a href=view_cat.php?cat='.$cat.'&page='. ($page - 3) .'>'. ($page - 3) .'</a> | ';
if($page - 2 > 0) $page2left = ' <a href=view_cat.php?cat='.$cat.'&page='. ($page - 2) .'>'. ($page - 2) .'</a> | ';
if($page - 1 > 0) $page1left = '<a href=view_cat.php?cat='.$cat.'&page='. ($page - 1) .'>'. ($page - 1) .'</a> | ';

if($page + 5 <= $total) $page5right = ' | <a href=view_cat.php?cat='.$cat.'&page='. ($page + 5) .'>'. ($page + 5) .'</a>';
if($page + 4 <= $total) $page4right = ' | <a href=view_cat.php?cat='.$cat.'&page='. ($page + 4) .'>'. ($page + 4) .'</a>';
if($page + 3 <= $total) $page3right = ' | <a href=view_cat.php?cat='.$cat.'&page='. ($page + 3) .'>'. ($page + 3) .'</a>';
if($page + 2 <= $total) $page2right = ' | <a href=view_cat.php?cat='.$cat.'&page='. ($page + 2) .'>'. ($page + 2) .'</a>';
if($page + 1 <= $total) $page1right = ' | <a href=view_cat.php?cat='.$cat.'&page='. ($page + 1) .'>'. ($page + 1) .'</a>';

// Вывод меню если страниц больше одной

if ($total > 1)
{
Error_Reporting(E_ALL & ~E_NOTICE);
echo "<div align='center' class=\"pstrnav\">";
echo $pervpage.$page5left.$page4left.$page3left.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$page3right.$page4right.$page5right.$nextpage;
echo "</div>";
}

}

else
{
echo "<p>Информация по запросу не может быть извлечена, в таблице нет записей</p>";

exit();
}        
                
                ?>
                
          </div>
         </div>
        <!-- end content -->
        <!-- start sidebars -->
        <?php include ("blocks/rightdiv.php");?>
        <!-- end sidebars -->
        <div style="clear: both;">&nbsp;</div>
    </div>
    </div>
    <!-- end page -->
</div>

<!--start menu-->
<?php include ("blocks/nav.php");?>
<!--end menu-->

<?php include ("blocks/footer.php");?>
</body>
</html>

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

Chichaco

16

Re: Запуск сервера пакетным файлом

Ошибки надо исправить.
if (!result2) - Эта строка должна быть такой:
if (!$result2)
Иначе переменная воспринимается, как константа. Проверьте скрипты на наличие этой ошибки и поправьте ее. Во втором файле вижу тоже такую проблему с if (!result2)

Re: Запуск сервера пакетным файлом

Спасибо, даже не знаю как они появились эти ошибки. Я удалял Денвер3 и всю информацию о своих проектах скачал в отдельную папку и теперь с неё закачал на Апач.

С этим всё понятно что делать.

Теперь у меня слетела русская кодировка. Все записи в БД были и есть на русском языке. Делал я все файлы в Dreamweaver Cs3 кирилица Windows.  В MySql нового сервера я поставил кодировку ср1251, как в статье.
Что надо сделать сейчас?

Chichaco

18

Re: Запуск сервера пакетным файлом

Юрий Иванович сказал:

Все записи в БД были и есть на русском языке.

Это хорошо. Значит надо только установить кодировку соединения с MySQL.

Ищем по всем файлам функцию mysql_connect и сразу после нее добавляем строку:

mysql_query('SET NAMES cp1251');

Re: Запуск сервера пакетным файлом

Спасибо!!!
Всё хорошо.
К счастью у меня соединение с БД в  отдельном подключаемом файле.
А на хост я тоже должен поставить этот запрос, там сейчас работает без него или он не повредит и пусть будет на всякий случай?

Теперь мне предстоит поставить на локальный хост Zend Framework.

Вы здесь сможете помочь если что?

Если нет, всё равно спасибо!!

Chichaco

20

Re: Запуск сервера пакетным файлом

Юрий Иванович сказал:

А на хост я тоже должен поставить этот запрос

Да,  добавьте обязательно.

Юрий Иванович сказал:

Теперь мне предстоит поставить на локальный хост Zend Framework.

С этим помочь не смогу, к сожалению.

Re: Запуск сервера пакетным файлом

Hanut сказал:
Юрий Иванович сказал:

А на хост я тоже должен поставить этот запрос

Да,  добавьте обязательно.

Юрий Иванович сказал:

Теперь мне предстоит поставить на локальный хост Zend Framework.

С этим помочь не смогу, к сожалению.

До свидания, спасибо!

Chichaco

22

Re: Запуск сервера пакетным файлом

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

Re: Запуск сервера пакетным файлом

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

Chichaco

24

Re: Запуск сервера пакетным файлом

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