Vložím tento kód na stránky a vyhodí to chybu. Nevíte, jaká funkce by mohla dělat problémy a jak to vyřešit? Díky
<?php
//
// Paste this block of code on your web page where you would like text
// links to be displayed. This code will dynamically add and remove text
// links on your web page according to your BackLinks.com settings.
//
// The following variable defines whether links are opened in a new window
// (1 = Yes, 0 = No)
$OpenInNewWindow = "1";
//
// Please DO NOT modify anything below
//
$BLKey = "L01M-LCNN-9YHZ";
$QueryString = "LinkUrl=".urlencode((($_SERVER['HTTPS']=='on')?'https://':'http://').$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
$QueryString .= "&Key=" .urlencode($BLKey);
$QueryString .= "&OpenInNewWindow=" .urlencode($OpenInNewWindow);
if(intval(get_cfg_var('allow_url_fopen')) && function_exists('readfile')) {
@readfile("http://www.backlinks.com/engine.php?".$QueryString);
}
elseif(intval(get_cfg_var('allow_url_fopen')) && function_exists('file')) {
if($content = @file("http://www.backlinks.com/engine.php?".$QueryString))
print @join('', $content);
}
elseif(function_exists('curl_init')) {
$ch = curl_init ("http://www.backlinks.com/engine.php?".$QueryString);
curl_setopt ($ch, CURLOPT_HEADER, 0);
curl_exec ($ch);
if(curl_error($ch))
print "Error processing request";
curl_close ($ch);
}
else {
print "It appears that your web host has disabled all functions for handling remote pages and as a result the BackLinks software will not function on your web page. Please contact your web host for more information.";
}
?>
Ehm. Když to hlásí chybu, tak je dobré sem tu chybu i uvést. Z zdrojového kódu těžko někdo tu chybu najde, zvlášť když ta chyba může nastat kdekoli.
V tomto případě je možnosti několik:
1) intval(get_cfg_var('allow_url_fopen')) mi vrací 0, i když je nastavena.
2) readfile, file -> URL file-access is disabled. Viz výše. Je potřeba povolit allow_url_fopen
3) knihovna cUrl není na WZ dostupná.
tyto 3 radky das na zacatek souboru a vypise ti to chybu PHP:
@ini_set('error_reporting', E_ALL);
@ini_set("display_errors", "on");
error_reporting(E_ALL);
pokud das nekde na konec i
phpinfo();
vypise ti to nastaveni php a ktere knihovny jsou nainstalovane. Je zbytecne psat adminum, aby ti nejakou doinstalovali, pravdepodobne to zamitnou. Zalezi na tom kterou. Konkretne o Curl tu byla rec nekolikrat a to znaci, ze ji nenainstalovali ani prvne ani pozdeji. Zrejme kvuli nejakemu bezp. problemu v ni.
Ta chyba je ošetřena tím ifem - čili se vyhodí:
It appears that your web host has disabled all functions for handling remote pages and as a result the BackLinks software will not function on your web page. Please contact your web host for more information.
Myslím si, že by to mohlo být nefunkčností funkcí readfile() nebo file() - protože odkazují na cizí server - absolutní cesta. Nejde to nějak ošetřit v souboru .htaccess ?
function_exists('readfile')
function_exists('file')
<HTML>Vytvořte soubor <span style="padding: 5px; border: 1px solid #ccc; background-color: #eee;"><code>.htaccess</code></span> (to je přesný celý název souboru), napište do něj:
<div style="padding: 5px; border: 1px solid #ccc; background-color: #eee;"><code>
php_flag allow_url_fopen on</code></div>
a nahrajte jej do svého kořenového adresáře.</HTML>
peta: @ini_set('error_reporting', E_ALL); = error_reporting(E_ALL); jen s tím rozdílem, že na drtivé většině hostingů nefunguje v rámci "zvýšení bezpečnosti" serveru.
tomas: "Ta chyba je ošetřena tím ifem" to není ošetření chyby. To je obyčejná podmínka pokud existuej funkce proveduj jí, pokud ne, vypíšu text.
A vzhledem k tomu, že na WZ cURL není, tak ti to bude pořád vypisovat zmíněný text.
Tom (manual.wz.cz)
Default instalace httpd - php5 je to zakazano a je treba to povolit v php.ini . Ano, to vim, spoleham na to, ze to maji povolene tam, kde se s php pracuje aktivne. Aspon na takove urovni, aby to slo zapnout jen pres php.
Na nekterem hostingu je povolene menit php.ini, viz prikaz ini_set(). Takze tam pocitam s tim, ze kdyz to povolene nemaji, tak si to povolim.
Pokud to nejde jinak, pozadam admina, aby mi to povolil. A on bud chce a nebo ne.
Asi tak jsem to myslel.