Выполнение php кода в html (ничего не помогает)

3BEPEK
На сайте с 30.11.2008
Offline
211
4863

Здравствуйте.

Подскажите плиз как заставить сайт на html обрабатывать php код, ни в какую не хочет.

Домен добавлен на сервер с поддержкой PHP как CGI

В .htaccess прописано следующее:

#AddDefaultCharset UTF-8
DirectorySlash Off

AddHandler php-cgi .html .htm .phtml .php

# important!
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^site.ru
RewriteRule (.*) http://www.site.ru/$1 [R=301,L]

RewriteRule ^robots.txt$ - [L]
RewriteRule ^sitemap.xml$ - [L]

RewriteCond %{REQUEST_FILENAME} !/_routing.php$
RewriteRule ^(.*)$ _routing\.php\?$1 [QSA,L]
</IfModule>

Но строка -

AddHandler php-cgi .html .htm .phtml .php
не срабатывает.

Пробовал и

RemoveHandler .html .htm
AddType application/x-httpd-php .php .htm .html .phtml
все равно не помогает.

Ответ тех. поддержки хостинга, тоже не дал надежд(

Запись AddHandler php-cgi .html .htm .phtml .php верна.
Вставки php в html начинают работать только если отключить этот кусок кода в .htaccess :

RewriteEngine On
RewriteCond %{HTTP_HOST} ^site.ru
RewriteRule (.*) http://www.site.ru/$1 [R=301,L]

RewriteRule ^robots.txt$ - [L]
RewriteRule ^sitemap.xml$ - [L]

RewriteCond %{REQUEST_FILENAME} !/_routing.php$
RewriteRule ^(.*)$ _routing.php?$1 [QSA,L]

Но если его отключить - сайт перестаёт корретно отображаться.
Копромиса, к сожелению найти не удалось.
➡️ ➡️ Лучший хостинг на земле! Ответ саппорта в течении 1-2 минут. Попробуйте и скажите мне - Спасибо ( https://vk.cc/9jsY3X ).
LEOnidUKG
На сайте с 25.11.2006
Offline
1771
#1

Вопрос: У меня сайт на чистом HTML, как мне вставить скрипт?

Ответ: В корневом файле .htaccess (если его нет, то нужно создать в корневой папке сайта) добавить строчку:

AddType application/x-httpd-php .php .htm .html

или

AddHandler application/x-httpd-php .php .htm .html .phtml

или

AddHandler x-httpd-php .php .htm .html .phtml

или

AddType application/x-httpd-php5 .php .htm .html

или

AddHandler application/x-httpd-php5 .php .htm .html .phtml

или

AddHandler x-httpd-php5 .php .htm .html .phtml

или

AddHandler cgi-script .html .htm

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
3BEPEK
На сайте с 30.11.2008
Offline
211
#2
LEOnidUKG:
Вопрос: У меня сайт на чистом HTML, как мне вставить скрипт?

Ответ: В корневом файле .htaccess (если его нет, то нужно создать в корневой папке сайта) добавить строчку:

AddType application/x-httpd-php .php .htm .html

или

AddHandler application/x-httpd-php .php .htm .html .phtml

или

AddHandler x-httpd-php .php .htm .html .phtml

или

AddType application/x-httpd-php5 .php .htm .html

или

AddHandler application/x-httpd-php5 .php .htm .html .phtml

или

AddHandler x-httpd-php5 .php .htm .html .phtml

или

AddHandler cgi-script .html .htm

Спасибо, пробовал без результатно, сейчас еще раз попробую.

Увы но результат такой же, php не обрабатывается, а в большинстве случаев и вовсе сайт перестает работать и вместо открытия страницы предлагает скачать файл _routing.php я так понимаю в нем и проблема наверное кроется.

Вот его содержание:

<?php

// ***************************************
// ***
// *** Do not touch anything unless
// *** you know what you're doing
// ***
// ***************************************
// -- KoXa

//--------- Active Configuration ------//

// default: 'plain'
$conf['active'] = 'plain'; // mysql, sqlite3, plain
//------------------------------------//

//--------mysql---------//
$conf['mysql']['host'] = 'localhost';
$conf['mysql']['user'] = 'root';
$conf['mysql']['pass'] = 'qwerty';
$conf['mysql']['db'] = 'lookup';
$conf['mysql']['table'] = 'lookup';

//--------plain/text------//
$conf['plain']['db'] = '.userfiles/db.list';

//--------sqlite----------//
$conf['sqlite3']['db'] = '.userfiles/db.sqlite3';
$conf['sqlite3']['table'] = 'lookup';


$conf['site_uri'] = get_site_dir();

// here we go

$p = get_uri_heuristic();

if (!$p || $p == "/") $p = './'; // index page
if (preg_match('#^(\/|\.\./)#', $p)||preg_match('#\./\.#',$p)) die_not_found();

$get_node = "get_node_".$conf['active'];
$node = $get_node($p);



if (!$node) die_not_found();



header("Content-Type: $node[ctype]");

if (!file_exists($node['realname'])) die_not_found();

// if (preg_match('/.*\.php$/i', $node['realname'])) include_once($node['realname']);
// else echo file_get_contents($node['realname']);

$html = file_get_contents($node['realname']);
parse_asserts($html);
echo $html;



//----------helpers-----------//

function get_node_plain($uri) {
global $conf;

$routes = file_get_contents($conf['plain']['db']);
$regex = quotez($uri).'\s*=>\s*(.*?)\s*=>\s*(.*)';
$regex = str_replace('#', '\#', $regex);
//die($regex);
$row = array();

if (preg_match("#$regex#", $routes, $matches)) {

$row['realname'] = trim($matches[1]);
$row['ctype'] = trim($matches[2]);

} return $row;
}

function get_node_sqlite3($uri) {
global $conf;

if (!_enabled('sqlite3')) die();
if (!file_exists($conf['sqlite3']['db'])) die("SQLITE ERROR: NO ROUTING DB");

$db = new SQLite3($conf['sqlite3']['db']);
if (!$db) die("SQLITE ERROR: DB OPEN FAILED");

$uri = sqlite_escape_string($uri);

$stmt = $db->prepare("SELECT * FROM `".$conf['sqlite3']['table']."` WHERE `uri` = :uri LIMIT 0,1");
$stmt->bindValue(':uri', $uri);
$res = $stmt->execute();
if ($row = $res->fetchArray(SQLITE3_ASSOC)) {
return $row;
} else {
return false;
}

}

function get_node_mysql($uri) {
global $conf;

$db = mysql_connect($conf['mysql']['host'], $conf['mysql']['user'], $conf['mysql']['pass']) or die("db open error: ".mysql_error());
mysql_select_db($conf['mysql']['db']) or die("cannot select db: ".mysql_error());
mysql_query("SET NAMES utf8");


$uri = mysql_real_escape_string($uri);
$query = "SELECT * FROM `".$conf['mysql']['table']."` WHERE `uri` = '$uri' LIMIT 0,1";
$res = mysql_query($query) or die(mysql_error());
if ($row = mysql_fetch_assoc($res)) {
return $row;
} else {
return false;
}


}


function get_uri_heuristic() {
global $conf;
//$p = $_SERVER['QUERY_STRING'];
$z = $_SERVER['REQUEST_URI'];

$z = preg_replace('/^'.quotez($conf['site_uri']).'/', '', $z, 1); // только 1 замена
if ($z == "index.html") $z = ""; // на некоторых серваках такой сброс нужен



return $z;
}

function quotez($str) {

return preg_replace('/([^a-zA-Z_0-9])/', '\\\\\1', $str);
}

function die_not_found() {
global $p, $conf;
if ($p != './' && $p != '/' && $p != 'index.html') { // redirect unless index page
header("Location: $conf[site_uri]");
die();
} else {
die("NOT FOUND");
}

}

function _enabled($opt) {
switch($opt) {
case 'sqlite3':

if (!class_exists('SQLite3')) {
print nl2br('SQLITE_3 NOT ENABLED

<b>sudo apt-get install php5-sqlite</b>

and restart Apache');
return 0;
} else {
return 1;
}

break;
}
}

function get_site_dir() {
/*
$p = $_SERVER['QUERY_STRING'];
$z = $_SERVER['REQUEST_URI'];
if ($p == "index.html") $p = ""; // на некоторых серваках такой сброс нужен
*/
$script_name = "_routing.php";
$s = $_SERVER['SCRIPT_FILENAME'];
if (preg_match('#.*/(\S+)#', $s, $m)) $script_name = $m[1];
$r = $_SERVER['DOCUMENT_ROOT'];

$ret = preg_replace('/^'.quotez($r).'/', '', $s);
$ret = preg_replace('/'.quotez($script_name).'$/', '', $ret);
if (!$ret) $ret="/";
return $ret;
}

function parse_asserts(&$html) {

$assert['header.php']='';
$assert['footer.php']='';


$_dir = ".userfiles";


foreach (glob("$_dir/*.inc.php") as $filename) {
include_once($filename);
}

foreach($assert as $mask => $val) {
foreach(glob("$_dir/*$mask") as $fname) {
if (file_exists($fname)) {
ob_start();
include_once($fname);
$assert[$mask] .= ob_get_clean();
}
}
}

//$html = preg_replace('#</head>#i', $assert['head'].'</head>', $html);
$html = preg_replace('#(<body(.*?)>)#i','${1}'.$assert['header.php'], $html);
$html = preg_replace('#</body>#i', $assert['footer.php'].'</body>', $html);

}

?>

Подскажите пожалуйста куда копать, в php практически нуб(

ДП
На сайте с 23.11.2009
Offline
203
#3

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

Добавьте

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

перед

RewriteRule ^(.*)$ _routing.php?$1 [QSA,L]

3BEPEK
На сайте с 30.11.2008
Offline
211
#4

Проблема решена спасибо, дело еще было в том что сайт напрямую хтмл файлы не отдает, все обращения к сайту обрабатываются файлом _routing.php.

Joker-jar
На сайте с 26.08.2010
Offline
167
#5

Отвратительный роутинг, судя по всему, через него пропускается вся статика. Но зачем? В .htaccess добавить проверку существования файла.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий