IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Веб-программирование (http://www.imho.ws/forumdisplay.php?f=29)
-   -   Трабла со скриптом на локалхосте (http://www.imho.ws/showthread.php?t=39562)

dafich 25.09.2003 15:03

Трабла со скриптом на локалхосте
 
есть скриптик:
<?
$script="file.php";
$file="file.txt";
if(isset($knopka)){
$fl = fopen($file,"a+");
flock($fl,LOCK_EX);
fputs($fl,"$name\n");
flock($fl,LOCK_UN);
fclose($fl);
}
?>
форма посылает ему данные:
<form action="test.php" method="post">
<textarea name="name" cols="30"></textarea>
<input type="submit" name="knopka" value="Отправить">
</form>

Все очень просто но вот засада на localhoste под виндой не пашет:-(
Заливаю на нормальный хостинг все работает.
А очень нужно запустить это на локалхосте.

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

RaZEr 25.09.2003 15:07

flock наверно глючит под окнами.

dafich 25.09.2003 15:10

RaZEr
Убрал нафиг всю блокировку все равно не записывает в файл.
<?
$file="file.txt";
if(isset($knopka)){
$fl = fopen($file,"a+");
fputs($fl,"$name\n");
fclose($fl);
}
?>

RaZEr 25.09.2003 15:16

Хмм ... странно ... так а ошибки то какие выдает ?

dafich 25.09.2003 15:18

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

RaZEr 25.09.2003 15:23

fputs замени на fwrite от греха подальше. И вот еще, скажи вот если ты удалишь пустой файл и запустишь скрипт, новый пустой файл создается ?

dafich 25.09.2003 15:27

Заменил на fwrite - теже яйца.
ага а новый файл не создается. Чтобы это значило?

RaZEr 25.09.2003 16:01

А это значит что проблема в fopen. Он попросту не открывает файл, или открывает но не тот. Ты посмотри, может где в корневухе создался файл. Вообщем поищи его на винте ...

dafich 25.09.2003 16:12

нифига, такого файла нет.
Блин, а почему на нормальном хосте все пашет.
Да, давно я такого гемороя не встречал.

RaZEr 25.09.2003 16:21

Попробуй создавать с абсолютным путем: C:\test.txt

PS: А вообще создаваться должно везде. Ты кстати еще зайди в php.ini и посмотри что там за incude_path если он раскоментирован (сюда процитируй).

dafich 25.09.2003 16:27

С абсолютным путем тоже болт.
в php.ini incude_path вообще нет.

RaZEr 25.09.2003 16:35

Цитата:

в php.ini incude_path вообще нет
закоментирован везде ?

dafich 25.09.2003 16:51

нет не закоментирован.
такой строки вообще нет.

RaZEr 25.09.2003 16:56

Ну раз нет, то и хорошо. Все-равно не нужна. Главное чтобы в php_info было:
Код:

include_path .;c:\php4\pear

jutky 25.09.2003 17:03

может у тебя стоит более новая версия PHP,
там переменные из формы надо брать так:
import_request_variables('p', 'p_'); #take the POST variables to the global scope. 'p' for the POST
теперь у тебя есть $p_knopka, ну и дальше как обычно.

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

dafich 25.09.2003 17:05

непашееееееееет
вот что было
;;;;;;;;;;;;;;;;;;;;;;;;;
; Paths and Directories ;
;;;;;;;;;;;;;;;;;;;;;;;;;

; UNIX: "/path1:/path2"
;include_path = ".:/php/includes"
;
; Windows: "\path1;\path2"
include_path = ".;c:\Program Files\php\includes"

Добавил:
include_path = ".;c:\Program Files\php\pear"

все равно болт

RaZEr 25.09.2003 17:10

Странные вещи происходят у тебя. Создай файлик в директории со скриптом, который сам скрипт создать не может, и напиши туда чего-нибудь. А затем в скрипте открой его с параметром r (вместо "a+"), и сделай fread($fp,filesize($filename)). И в echo выведи это дело.

Выводит содержимое файла ?

dafich 25.09.2003 17:13

jutky

вот молодца. пасибо.
все заработало.

:yees:

Добавлено через 3 минуты:
RaZEr

вот так все прекрасно пашет:

Спасибо jutky .:yees:

<?
$script="file.php";
$file="file.txt";
import_request_variables('p', 'p_');
if(isset($p_knopka)){
$fl = fopen($file,"a+");
fwrite($fl,"$p_name\n");
fclose($fl);
}
?>

вообще странно конечно все это

RaZEr 25.09.2003 17:14

Мдя ... блин :p :biggrin: у тебя он до fopen просто не доходил ... видать register_globals не стоит и конструкция:

if(isset($knopka)){ ... }

просто пропускалась ... м-да ...

dafich 25.09.2003 17:19

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


спасибо тебе за помошь. ;)

RaZEr 25.09.2003 17:23

isset($knopka) проверяет существует ли переменная $knopka. Ее не существовало, так как у тебя не включен register_globals (в php.ini). Нужно было проверять не:
Код:

isset($knopka)
а:
Код:

isset($POST['knopka'])
PS: Так что если не хочешь обращаться к переменным через массив $POST или делать import_request_variables(), то просто сделай в php.ini:
Код:

register_globals = On

dafich 25.09.2003 17:29

RaZEr

усе понял СПАСИБО


Часовой пояс GMT +4, время: 08:30.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.