[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Полная перезапись файла
BaGi
Здравствуйте, нужно чтобы файл перезаписывал самого себя, вот код:
if(!empty($_GET['upd']))
{
$file = $_SERVER[PHP_SELF];
$cnt = fopen($file,"a+");
fwrite($fd, $_GET['upd']);
fclose($cnt);
exit;
}


выпиливается куча ошибок, что не так?



Спустя 32 минуты, 38 секунд (18.06.2012 - 16:42) vagrand написал(а):
Приведите текст ошибок

Спустя 26 минут, 8 секунд (18.06.2012 - 17:08) BaGi написал(а):
Warning: fopen() [function.fopen]: open_basedir restriction in effect. File(/acc.php) is not within the allowed path(s): (/home/www/hosts/germesavto:/tmp:/home/www/hosts/tmp:/usr/local/www/dtc/etc/dtc404:/home/www/system:/usr/local/lib/php/phplib/:/usr/share/dtc/shared/:/usr/share/pear:/usr/share/dtc/e tc/dtc404:) in /home/www/hosts/germesavto/germesavto.com/subdomains/www/html/acc.php on line 6

Warning: fopen(/acc.php) [function.fopen]: failed to open stream: Operation not permitted in /home/www/hosts/germesavto/germesavto.com/subdomains/www/html/acc.php on line 6

Warning: fwrite(): supplied argument is not a valid stream resource in /home/www/hosts/germesavto/germesavto.com/subdomains/www/html/acc.php on line 7

Warning: fclose(): supplied argument is not a valid stream resource in /home/www/hosts/germesavto/germesavto.com/subdomains/www/html/acc.php on line 8

Спустя 22 минуты, 20 секунд (18.06.2012 - 17:30) BaGi написал(а):
Дело в том, что скрипт будет заливаться на ряд сайтов и для каждого указывать корневую директорию и инклюдится к ней не вариант, поэтому должно быть что-то универсальное. Может по количеству слешей определять, где мы находимся и к корневой подключаться, а потом к $_SERVER[PHP_SELF]? Или есть более быстрый и удобный вариант?

Спустя 28 минут, 30 секунд (18.06.2012 - 17:59) Invis1ble написал(а):
$_SERVER['DOCUMENT_ROOT']

Спустя 5 минут, 51 секунда (18.06.2012 - 18:05) BaGi написал(а):
---Отлично, он директорию показывает, а имя файла как узнать?
Ступил. Спасибо большое!

Вот как сделал:

if(!empty($_GET['upd']))
{
$file = $_SERVER[SCRIPT_FILENAME];
$cnt = fopen($file,"w+");
fwrite($cnt, $_GET['upd']);
fclose($cnt);
exit;
}

Спустя 4 минуты, 50 секунд (18.06.2012 - 18:10) Invis1ble написал(а):
echo realpath(__FILE__);

Спустя 27 минут, 19 секунд (18.06.2012 - 18:37) BaGi написал(а):
И еще проблема :)

if(!empty($_GET['upd']))
{
$file = $_SERVER[SCRIPT_FILENAME];
$cnt = fopen($file,"w+");
fwrite($cnt, "<?php ////// ?>");
fwrite($cnt, $_GET['upd']);
fclose($cnt);
exit;
}


Чтобы кто-то случайно не запилил туда что попало и мне пришлось лезть и ручками все изменять, надо добавить то же самое. Но что мне написать тут?
fwrite($cnt, "<?php ////// ?>");

Там какая-то рекурсия получается :)

Спустя 4 дня, 20 часов, 47 минут, 3 секунды (23.06.2012 - 15:24) BaGi написал(а):
Подымаю тему, т.к возникла проблема.
Скрипт очень длинный получается и мне приходит ошибка 414 Request-URI Too Large при попытке обновления. В принципе, мне надо обновлять все ради пары строк, но как обновить только их?

Спустя 50 минут, 42 секунды (23.06.2012 - 16:15) FatCat написал(а):
Цитата (BaGi @ 23.06.2012 - 16:24)
обновлять все ради пары строк, но как обновить только их?

Нужно менять содержимое файла или дописать пару строк в конец?

Спустя 29 минут, 6 секунд (23.06.2012 - 16:44) BaGi написал(а):
Поменять содержимое))

Спустя 29 минут, 31 секунда (23.06.2012 - 17:13) Invis1ble написал(а):
используй метод POST вместо GET

Спустя 1 час, 8 минут, 13 секунд (23.06.2012 - 18:22) BaGi написал(а):
Да, спасибо, все пашет! Но вот другая проблема
Я использую шифрование base64 для передачи текста (много разных & стоит), данные передаются правильно, но неправильно расшифровываются, часть текста бьется (<formBЏ[њ]\OHќ^€�[YOHќ\ЏѓBЏ[њ]\OH”ЭX›Z]ЏѓBЏ Щ›Ь›OѓBЏЬBљYЉY[\J Ф‘TUQTХЙЭ\ ЧJJCBћГB‚Iљ[HH ФСT•‘T–ФРФ’TС’SSђSQWNГB‚IЫќH›Ь[Љ љ[KќКИЉNГB‚I™]Ш›ЩHH�\ЩMЌЩXЫЩJ Ф‘TUQTХЙЭ\ ЧJNГB‚YќЬљ]J Ыќ  ™]Ш›ЩJNГB‚Y�ЫЬЩJ Ыќ
NГB‚Y^]ГBџCBѓBљYЉ)
кодируется вроде правильно (онлайн сервисы расшифровывают нормально), использую base64_decode()
кодировка ANSI в блокноте, что там программа посылает хз, но по логу charles все правильно вроде

Спустя 2 часа, 56 минут, 25 секунд (23.06.2012 - 21:18) vital написал(а):
Цитата
что там программа посылает хз

Тогда как починить хрен его знает.

Спустя 2 часа, 14 минут, 9 секунд (23.06.2012 - 23:32) BaGi написал(а):
Да, там в проге было немного кривовато. И вопрос по старой теме, мне нужно получить директорию, где исполняется скрипт. Допустим сайт http://site.com/folder/index.php

Надо получить http://site.com/folder/

С помощью $site = "http://".$_SERVER[SERVER_NAME].$_SERVER[PHP_SELF];
я получаю и названия скрипта в конце, а это не нужно

Спустя 7 минут, 43 секунды (23.06.2012 - 23:40) Invis1ble написал(а):
dirname(__FILE__)

Спустя 5 минут (23.06.2012 - 23:45) FatCat написал(а):
Цитата (BaGi @ 24.06.2012 - 00:32)
Надо получить http://site.com/folder/

С помощью $site = "http://".$_SERVER[SERVER_NAME].$_SERVER[PHP_SELF];
я получаю и названия скрипта в конце, а это не нужно

$site = explose("/",$site);
unset( $site[ (count($site)-1) ] );
$site = implose("/",$site);



Цитата (Invis1ble @ 24.06.2012 - 00:40)
dirname(__FILE__)

Так он получит серверный путь.

Спустя 10 минут, 22 секунды (23.06.2012 - 23:55) Invis1ble написал(а):
FatCat
физический. да, заработался

Цитата
$site = explose("/",$site);
unset( $site[ (count($site)-1) ] );
$site = implose("/",$site);

опечатки, explode и implode

Спустя 10 минут, 15 секунд (24.06.2012 - 00:05) Invis1ble написал(а):
кстати с url тоже прокатывает
echo dirname('http://site.com/folder/index.php');

Спустя 2 часа, 59 минут, 37 секунд (24.06.2012 - 03:05) FatCat написал(а):
Цитата (Invis1ble @ 24.06.2012 - 00:55)
опечатки

user posted image

Спустя 16 часов, 32 минуты, 1 секунда (24.06.2012 - 19:37) BaGi написал(а):
Спасибо всем, все отлично работает!
Быстрый ответ:

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