GoDaddy: URL file-access is disabled in the server configuration

happyslacker

New Member
Код:
Warning: include() [function.include]: URL file-access is disabled in the server configuration in /home/content/g/d/d/gddel06082008/html/example.com/herbs.php on line 104

Warning: include(http://www.hotlinkmeds.com/herbsfarm/scripts/index.php?product=) [function.include]: failed to open stream: no suitable wrapper could be found in /home/content/g/d/d/gddel06082008/html/example.com/herbs.php on line 104

Warning: include() [function.include]: Failed opening 'http://www.hotlinkmeds.com/herbsfarm/scripts/index.php?product=' for inclusion (include_path='.:/usr/local/php5/lib/php') in /home/content/g/d/d/gddel06082008/html/example.com/herbs.php on line 104

Проблемът се наблюдава с шаблон от GenBucks (може би смятат, че така проследяващата им система ще отчита по-точно продажбите?).

Пуснах оплакване до поддръжката и чакам отговор. Ще пиша после дали са пожелали да си коригират конфигурацията. Надявам се да я оправят, защото съм си платил за 1 година напред...
 
Последно редактирано:
От: GoDaddy: URL file-access is disabled in the server configuration

Не чакай да ти разрешат да си инклудваш каквото си искаш
Няма да стане. Ползвам ги отдавна.
И само да си знаеш, отговора който ще ти дойде, няма да бъде от човек, а от робот.
 
От: GoDaddy: URL file-access is disabled in the server configuration

Отговориха изненадващо бързо (още преди 10 минути):
after looking into your request, you have to enable it in your php.ini or php5.ini file depending on what version of php you are coding for.
Allow_url_fopen = on;
allow_url_include = on;

Сега ще пробвам дали работи.
 
От: GoDaddy: URL file-access is disabled in the server configuration

Наложи се да коригирам и още една променлива:

Код:
register_globals = On

Сега вече всичко изглежда работещо.

Името на файла е php5.ini (имах php.ini и го преименувах на php5.ini след като го редактирах).
 
От: GoDaddy: URL file-access is disabled in the server configuration

Пич, не се прави така, защото по този начин може да ти хакнат сайта. Прави се ето така:

PHP:
$somepage = file_get_contents("http://дрън-дрън");
echo $somepage;

За подробности прочети това:
http://bg.php.net/manual/bg/function.file-get-contents.php


Ако не работи значи най-вероятно не си прочел в документацията, че може да се наложи да URL-енкоднеш адреса преди това.


И най-важното: функцията include се използва за да вмъкнеш файлове с PHP код или нещо подобно, което е част от твоя CMS, а не за вмъкване на съдържание!!!

Ето защо:

1. Дори да е разрешено инклудване на remote файлове, най-вероятно ще получиш грешка, защото http://www.hotlinkmeds.com/herbsfarm/scripts/index.php?product= ти връща HTML код, а не PHP код.

2. Някой може да вкара зловреден PHP код във въпросната страница - например такъв:

PHP:
echo $db_user;
echo $db_pass;
echo $db_name;

и после да изпълни нещо такова:

PHP:
mysql_query("DROP DATABASE $db_name");


Надявам се, че сте ме разбрали :D
 
Последно редактирано:
От: GoDaddy: URL file-access is disabled in the server configuration

voic4e чети малко преди да пишеш... той ползва шаблон на ГБ те нямат БД и няма да получи грешка include може да се ползва и за htm a според мен happyslacerl си ги разбира нещата... според теб трябва да ползва iframe?
 
От: GoDaddy: URL file-access is disabled in the server configuration

voic4e чети малко преди да пишеш... той ползва шаблон на ГБ те нямат БД и няма да получи грешка include може да се ползва и за htm a според мен happyslacerl си ги разбира нещата... според теб трябва да ползва iframe?

Не, не казвам че не разбира, мисълта ми беше, че не е нужно да се активират други работи през php.ini при положение че има достъпни инструменти за това. :)

Когато искате да покажете съдържание от чужд сайт във Ваша страница, е достатъчно да използвате функция която взима съдържанието от чуждия сайт и го изплюва във вашата страница. За тази цел file_get_contents върши перфектна работа. Дори си мисля, че това е една от целите, за които е създадена тази функция, иначе нямаше да я направят да отваря URL :wink:

След това ако желаете - има много начини да парснете това съдържание и да си вземете каквото Ви трябва от него, докато при варианта с include е невъзможно да го парснете (до колкото мога да мисля в момента).

PHP:
echo file_get_contents("http://alabala.com");

и да не забравяме, че може да се наложи да ползвате http://bg.php.net/urlencode


Обикновено това се налага ако в адреса на страницата, която искате да покажете има символи различни от

Код:
цифри, латински букви и / + - _ . & =



А за iframe - изобщо нямам предвид да се ползва, защото цялото смесване се извършва от страната на сървъра, не при клиента. :)
 
Последно редактирано:
От: GoDaddy: URL file-access is disabled in the server configuration

я ми кажи как мога да парсна ценовата листа на most.bg
 
От: От: GoDaddy: URL file-access is disabled in the server configuration

я ми кажи как мога да парсна ценовата листа на most.bg

Не можах да отворя страницата с ценовата листа, но ако е в HTML формат можеш да използваш ето това: http://bg.php.net/DOM след като предварително си извлякъл страницата в променлива чрез гореописаната функция.

С половин-един час игра можеш да напишеш PHP скрипт, който да извлече конкретните данни и да ти ги наблъска в няколко рилейтнати таблици в БД :wink: Може би си уеб програмист и ме тестваш :)
 
Последно редактирано:
От: GoDaddy: URL file-access is disabled in the server configuration

Малко се поувлякох и реших да покажа пример с парсване. Този код извлича имената на потребителите и техните постове от някоя тема в Предприемач: :oops:

PHP:
<?php

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

?><html>
	<head>
  	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  	<meta http-Equiv="Pragma" Content="no-cache">
  </head>
  <body>
<?

$html = file_get_contents("http://www.predpriemach.com/showthread.php?p=55791#post55791");
//echo $html;


$doc = new DOMDocument();
$doc->loadHTML($html);

$charset = $doc->actualEncoding;
echo $charset."<br/>\n";

$html = iconv($charset, "UTF-8", $html);


$title_arr = $doc->getElementsByTagName('title');
	foreach ($title_arr as $title_obj)
	{
		if ($title_obj->nodeValue != "")
		{
			echo $title_obj->nodeValue."<br/><br/><br/>\n\n\n";
		}
	}


$arr1 = $doc->getElementsByTagName('a');
	foreach ($arr1 as $username_obj)
	{
		if ($username_obj->hasAttribute("class"))
		{
			if (substr($username_obj->getAttribute("class"),0,11) == "bigusername") {
				echo "<strong>".$username_obj->nodeValue."</strong><br/>\n";
				
				$post_obj_childs = $username_obj->parentNode->parentNode->parentNode->parentNode->
				parentNode->parentNode->parentNode->childNodes;
				$post = $post_obj_childs->item(2)->firstChild->childNodes->item(10)->nodeValue;
				echo trim($post)."<br/><br/><br/>\n\n\n";
			}
		}
	}

?>
</body>
</html>


Как мислите, това не е ли по-добър вариант? Можете ли да постигнете същото с

PHP:
include "http://www.predpriemach.com/showthread.php?p=55786#post55786";

? :p
 
Последно редактирано:

Горе