[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Не работают PHP скрипты (PHP5.2.8 + Apache2.2.11)
POPOV
Здраствуйте !!
Вообщем установил Apache2.x и PHP 5.x.x. (настраивал по какому-то FAQ, не помню уже).

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

Apache: C:\Program Files\Apache Software Foundation\Apache2.2
PHP: C:\PHP

Написал скрипт - файл val1.php (Это вычисление факториала, ошибок в нём быть не должно):
Код

<html>
<body>
<form name="f1" method="post" action="val1.php">
<h3> Пример вычисления y=n!</h3>
Введите n:
<input type="text" name="n" value="" >
<input type="submit" value="factorial" name="submit">
</form>
<?php
$y=1;
for ($i=1;$i<=$n;$i++)
{ $y*=$i;}
print("<p><h4>n!=$y</h4></p>");
?>
</body>
</html>


Данный файл с расширением .php скопировал в папку htdocs сервера Apache.
Далее открываю браузер (IE 7.0) и пишу http://localhost/val1.php и в результате чего открывается окно с текстовым полем для ввода "n" и кнопка вычисления файкториала. Введя значение n и нажав на кнопку ничего не происходит (только щелчёк как-будто обновилась страница). Хотя тестовые скрипты работают, например: phpinfo(); или просто echo "Testirovanie php";

Вот незнаю чё делать.. Выкладываю сюда файл конфигурации PHP.ini и httpd.conf. Очень рассчитываю на вашу помощь.. а то задание никак сделать не могу.. Благодарю !



Спустя 9 минут, 8 секунд (25.01.2009 - 15:49) jetistyum написал(а):
PHP
<?php
$y
=1;
for (
$i=1;$i<=$n;$i++)
$y*=$i;}
print(
"<p><h4>n!=$y</h4></p>");


ну так а откуда у тебя берется переменная $n
?
а register_globals у тебя как настроен в пхп ? а сам пхп не выдает никаки ошибок?
поставь в начале скрипта
error_reporting(E_ALL);

Спустя 14 минут, 20 секунд (25.01.2009 - 16:04) POPOV написал(а):
register_globals в значении On стоит. Вот как проверить сам PHP ? Я где-то вычитал такой скрипт: C:/PHP/php.exe -f script.php
И было написано, что рабочий PHP должен выдать результаты скрипта, а у меня куча каких-то ошибок:

C:\Documents and Settings\Вовка>c:/php/php.exe -f script.php
Cannot find module (IP-MIB): At line 0 in (none)
Cannot find module (IF-MIB): At line 0 in (none)
Cannot find module (TCP-MIB): At line 0 in (none)
Cannot find module (UDP-MIB): At line 0 in (none)
Cannot find module (SNMPv2-MIB): At line 0 in (none)
Cannot find module (SNMPv2-SMI): At line 0 in (none)
Cannot find module (UCD-SNMP-MIB): At line 0 in (none)
Cannot find module (UCD-DEMO-MIB): At line 0 in (none)
Cannot find module (SNMP-TARGET-MIB): At line 0 in (none)
Cannot find module (SNMP-VIEW-BASED-ACM-MIB): At line 0 in (none)
Cannot find module (SNMP-COMMUNITY-MIB): At line 0 in (none)
Cannot find module (UCD-DLMOD-MIB): At line 0 in (none)
Cannot find module (SNMP-FRAMEWORK-MIB): At line 0 in (none)
Cannot find module (SNMP-MPD-MIB): At line 0 in (none)
Cannot find module (SNMP-USER-BASED-SM-MIB): At line 0 in (none)
Cannot find module (SNMP-NOTIFICATION-MIB): At line 0 in (none)
Cannot find module (SNMPv2-TM): At line 0 in (none)
Could not open input file: script.php

Вот про переменную n я не знаю. Код взят из методички, писал преподаватель, у него на скриншотах всё работает. Кстати есть ещё скрипт, где результат PHP выводится в другом окне браузера. В этом случае при вводе n и нажатии кнопки вычисления, выдаётся запрос на сохранение файла PHP, вместо вывода результата.

Поставил как вы сказали error_reporting(E_ALL);
Вот сообщение, появившееся при запуске скрипта:

Notice: Undefined variable: n in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\val1.php on line 12

А если ошибка в коде, немоглибы вы написать строчку, как n присвоить значение из текстового поля ?

Спустя 12 минут, 9 секунд (25.01.2009 - 16:16) twin написал(а):
Попробуйте так:
PHP
<html>
<
body>
<
form name="f1" method="post" action="?">
<
h3Пример вычисления y=n!</h3>
Введите n:
<
input type="text" name="n" value="" >
<
input type="submit" value="factorial" name="submit">
</
form>
<?
php
$n 
$y = isset($_POST['n'])?$_POST['n']:0;
for (
$i=1$i<=$n$i++)
 
$y *= $i;
print(
"<p><h4>n!=$y</h4></p>");
?><>
И отключите register_globals (Off)

Спустя 5 минут, 20 секунд (25.01.2009 - 16:21) jetistyum написал(а):
О, видимо он не может загрузить модули, которые указаны в конфиге php.ini
нужно проверить путь к модулям указанный в этом конфиге, существует ли он, и есть ли там модули.

и еще, при открытии -f тебе нужно указать полный путь к скрипту...

при register_globals = on у тебя должны автоматически сетиться переменные из POST , но это не рекомендовано...
посмотри логи работы пхп, может там что-то откапаешь...

Спустя 24 минуты, 50 секунд (25.01.2009 - 16:46) POPOV написал(а):
twin
Попробовал добавить ту строку $n = $y = isset($_POST['n'])?$_POST['n']:0;, программа заработала, и в коде там у меня цикл неправильный )) Нужно в цикле не $i<=$n, а $i<=$n Кстати, что значит строчка $n = $y = isset($_POST['n'])?$_POST['n']:0; ?? Спасибо !!

jetistyum
Путь к модулям указывается как я понял в директиве extension_dir, у меня стоит extension_dir = "c:/php/ext". Зашёл по этуму пути, все перечисленные в файле .ini библиотеки присутствуют.
Поясните пожалуйста вот это "при открытии -f тебе нужно указать полный путь к скрипту...", а то нипонял что делать )

------------------------

Вот тотже скрипт, только результаты его должны выводится в новом окне браузера (запускается файл formfact.html), тоесть запускаемом html файле указывается ссылка на файл php (fact.php) :

Интересно, почему вместо резултата мне предлагается сохранить php файл.

Код formfact.html

Код

<html>
<!--formfact.htm -->
<body>
<form name="f1" method="post" action="fact.php">
<h3> Пример вычисления y=n!</h3>
Введите n:
<input type=text name="n" value="" >
<input type=submit value="fact" name="submit">
</form>
</body>
</html>


Код fact.php
Код

<!-- fact.php -->
<?php
$y=1;
for ($i=1;$i<=$n;$i++)
{ $y*=$i;}
echo "$bl n!=$y";
?>


Вообще непонимаю как заработал тот скрип (дописал twin), если у меня PHP по идее не работает, так как в консоле стока ошибок.

Спустя 14 минут, 53 секунды (25.01.2009 - 17:01) twin написал(а):
Вообще то я даже не глянул на расчеты, меня другое интересовало. Факториал Вы получите так:
PHP
<html>
<
body>
<
form name="f1" method="post" action="?">
<
h3Пример вычисления y=n!</h3>
Введите n:
<
input type="text" name="n" value="" >
<
input type="submit" value="factorial" name="submit">
</
form>
<?
php
$n 
$y = isset($_POST['n'])?$_POST['n']:0;
for (
$i=0$i $n$i++)
 
$y += $i;
print(
"<p><h4>n!=$y</h4></p>");
?><>
И отключите же наконец register_globals. Если и дальше будут казусы, я подскажу, что делать.

Спустя 2 минуты, 6 секунд (25.01.2009 - 17:03) twin написал(а):
А строчка
PHP
<?
$n $y = isset($_POST['n'])?$_POST['n']:0;

это банальная инициализация (присвоение начального значения ) переменных. Именно для того, что бы получить их из формы при отключенном register_globals

Спустя 10 минут, 27 секунд (25.01.2009 - 17:13) POPOV написал(а):
twin Ой, извиняюсь, отключил этот register_globals ещё после вашего первого поста и забыл написать. Остаётся только проблема когда этот php скрипт вызывается из файла .html (описал подробно в предыдущем посте в низу). Там у меня почему-то вместо вывода результата в дургом окне, предлагается сохранить файл .php. Может там эту инициализацию добавить ?
Только я ничё в ней не понимаю, например где в той строке указывается имя текстового поля из которого данные берутся..

Спустя 26 минут, 10 секунд (25.01.2009 - 17:40) twin написал(а):
Если Вы ничего не понимаете на таком уровне, то вот попробуйте тут почитать, а потом что не понятно спросите здесь. А то слишком много писать придется.

Спустя 49 минут, 44 секунды (25.01.2009 - 18:29) POPOV написал(а):
Большое спасибо !!, почитаю..

Спустя 1 час, 41 минута, 40 секунд (25.01.2009 - 20:11) POPOV написал(а):
Да, забыл спросить, на вашем форуме есть инструкция по подключению PHP к Apаche и настройке ?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.