Есть сайт построен на сторонем движке (система генту), работает все на ура.
Возникла необходимость поднять еще один для тестов и экспериментов.
Ввиду того что собираемся менять используемую ось, решили подвергнуть эксперименту.
Подняли LAMP на openSuSE, перенесли базу mysql, и вроде все работает только вот с маленькой ошибкой
ссылка меню ведет по адресу http://localhost/services - результат ошибка нет такой страницы
а вот если поправить http://localhost/?services - тогда все впорядке и нормально работает
и я так понимаю скорей всего дело не в движке, а в настройках PHP или MySQL
вот только что, не понятн?
[Решено] PHP+MySQL+Apache+CMS
А в исходниках глянуть? Как я понимаю, сайт на PHP написан?
Если речь идет про исходники сайта, так я не силен в php, да и знакомых у меня, которые бы шарили нет.
Но думаю что дело не в них, так как на генту работает, сейчас вот еще на федоре 12 проверяли, работает.
config.php
<?
#define("SITE_ROOT", "/delfin"); //should be without trailing slash
define("SITE_ROOT", "");
define("DOCUMENT_ROOT", dirname(__FILE__));
define("INCLUDE_FOLDER", DOCUMENT_ROOT."/include");
define("ADMIN_FOLDER", DOCUMENT_ROOT."/admin");
ini_set("include_path", ".:".INCLUDE_FOLDER.":".DOCUMENT_ROOT."/custom:".ADMIN_FOLDER."/include");
define("TEMP", DOCUMENT_ROOT."/tmp");
define("FILES_FOLDER", DOCUMENT_ROOT."/file");
define("FILES", SITE_ROOT."/file");
define("TEMPLATES_FOLDER", DOCUMENT_ROOT."/templates");
define("CACHE_FOLDER", DOCUMENT_ROOT."/cache");
#define("MYSQL_SERVER", "sql.server.address");
#define("MYSQL_USER", "username");
#define("MYSQL_PASSWORD", "sqlpassword");
#define("MYSQL_DBNAME", "dbname");
#define("MYSQL_PREFIX", "delfin_");
define("MYSQL_SERVER","127.0.0.1"); define("MYSQL_USER", "root");
define("MYSQL_PASSWORD", "rootpass");
define("MYSQL_DBNAME", "delphin");
define("MYSQL_PREFIX", "delfin_");
define("HUMAN_READABLE_URLS", 1);
define("ENABLE_OUTPUT_CACHE", 0);
define("PROJECT_FOLDER", DOCUMENT_ROOT);
define("MAIN_CSS_URI", SITE_ROOT."/main.css");
define("EXPORT_FOLDER", FILES_FOLDER);
if(
!defined("HUMAN_READABLE_URLS") or
!HUMAN_READABLE_URLS or
defined("IN_ADMIN_AREA") or
(preg_match("/^\/?$/", $foo=substr(preg_replace("/\?.*/", "", $_SERVER["REQUEST_URI"]), strlen(SITE_ROOT))) and $_SERVER["QUERY_STRING"])
) define("PATH", urldecode(implode("/", preg_split("/\//", preg_replace("/=|&.*/", "", $_SERVER["QUERY_STRING"]), -1, PREG_SPLIT_NO_EMPTY))));
else define("PATH", urldecode(implode("/", preg_split("/\//", $foo, -1, PREG_SPLIT_NO_EMPTY))));
//echo $foo, "--", PATH; exit;
define("MAXIMUM_FILES_PER_FOLDER", 512);
define("LOG_500", 1);
define("LOG_MAX_SIZE", 100000);
define("COMPRESS_OUTPUT", 1);
define("PROTECT_EMAILS", 1);
define("STARTMICROTIME", microtime());
define("EMAIL_FOR_ERROR_500_REPORTS", "");
if(isset($_GET["DEVELOPER_MODE"])) {
setcookie("DEVELOPER_MODE", $_GET["DEVELOPER_MODE"], $_GET["DEVELOPER_MODE"] ? time()+60*60*24*30 : time()-1, "/");
}
#define("USE_MYSYSTEM_CALL", 1);
define("USE_MYSYSTEM_CALL", 0);
define("HTTP_304_HEADER", "HTTP/1.x 304 Not Modified"); //Status: 304
define("PATH_TO_MYSQL_UTILITY", "mysql");
define("PATH_TO_MYSQLDUMP_UTILITY", "mysqldump");
define("PATH_TO_TAR_UTILITY", "tar");
define("PATH_TO_GZIP_UTILITY", "gzip");
define("DN_MODE", 1);
define("JPEG_RESAMPLING_QUALITY", 90);
#define("PATH_TO_SED_UTILITY", "/usr/bin/sed -E"); //must be supplied "extended regep" option ("-E"), on some systems it's "-r"
define("PATH_TO_SED_UTILITY", "/usr/bin/sed -r"); //must be supplied "extended regep" option ("-E"), on some systems it's "-r"
date_default_timezone_set("Europe/Moscow");
?>
index.php
<?
// $Id: index.php 43 2006-08-17 16:18:34Z xorax $
//include "config.php";
include_once "config.php";
if(preg_match("/^http:\/\/.+/", PATH)) { header("Location: ".PATH); exit; }
include_once INCLUDE_FOLDER."/min.php";
if(defined("ENABLE_OUTPUT_CACHE") and ENABLE_OUTPUT_CACHE) output_cache_try_print();
include_once INCLUDE_FOLDER."/base.php";
if(GPC("DEVELOPER_MODE")) header("X-Document-Root: ".DOCUMENT_ROOT);
if((defined("COMPRESS_OUTPUT") ? COMPRESS_OUTPUT : 1) and function_exists("ob_gzhandler")) ob_start("ob_gzhandler");
ob_start("process_output");
function publish($uri) {
global $DB, $published, $context;
//image resampling support here:
preg_match("/^resample(_fit([xy])(\d+)(?:_fit([xy])(\d+))*)\/(.+?(?:gif|jpe?g|png))$/i", $uri, $regexp);
if($regexp and is_file($file=PROJECT_FOLDER.'/'.end($regexp))){
process_image_resampling($regexp, $file);
}
elseif($regexp and $published=$DB->resolve(array_pop($regexp)) and $published->sys["MTYPE"]==TYPE_O_IMAGE_DOCUMENT){
$image_resample_query=$regexp[1];
}
elseif(
( ($lm=date("r", get_last_modified())) && isset($_SERVER["HTTP_IF_MODIFIED_SINCE"]) &&
$_SERVER["HTTP_IF_MODIFIED_SINCE"]==$lm) ||
(isset($_SERVER["HTTP_IF_NONE_MATCH"]) && $_SERVER["HTTP_IF_NONE_MATCH"]==md5($lm))){
header(defined("HTTP_304_HEADER") ? HTTP_304_HEADER : "HTTP/1.x 304 Not Modified");
//header("Status: 304");
set_error_handler("error_catcher");
while (@ob_end_clean());
set_error_handler("error_handler");
exit;
}
elseif(($published=$DB->resolve($uri, '404'))==='404' or !$published->isVisible()) {
if(defined("LOG_404") and LOG_404) logit("Not Found: ?".$uri."\n---------------\n");
include_once "404.php";
exit;
}
if(!isset($GLOBALS["context"])) $GLOBALS["context"]=$published;
extract($GLOBALS);
while(!$published->isPublishable()) $published=$published->getParent();
if(!$published->misc["template"]) {/* include "403.php"; */ include_once "403.php"; exit;}
elseif($published->misc["template"]=="." and !$published->isFolderish() and $published->hasAttribute("content")) {
if($published->sys["MTYPE"]==TYPE_O_IMAGE_DOCUMENT or $published->sys["MTYPE"]==TYPE_O_FILE_DOCUMENT) {
if($v=$published->getAttrValue("content")) myheader("Location: ".fix_url(str_replace(SITE_ROOT, SITE_ROOT.(isset($image_resample_query) ? '/resample'.$image_resample_query : ''), FILES)."/".$v));
else echo "";
exit;
}
else {
$attr=$published->getAttribute("content");
if($attr["AUX"]) myheader("Content-Type: ".$attr["AUX"]);
common_headers();
echo $attr["VBLOB"];
}
}
else {
common_headers();
//include TEMPLATES_FOLDER."/".$published->misc["template"];
include_once TEMPLATES_FOLDER."/".$published->misc["template"];
}
exit;
}
function common_headers(){
if($_SERVER["REQUEST_METHOD"]!="POST") {
$lm=date("r", get_last_modified());
myheader("Last-Modified: {$lm}");
myheader("ETag: ".md5($lm));
}
}
function process_image_resampling($regexp, $file){
// This function provides ability for on-fly image resampling. Primarily designed to support calls like these:
// http://server.tld/images/my_big_image.gif - this is normal image
// http://server.tld/resample_fitx100_fity100/images/my_big_image.gif - will reduce the dimentions of the image
// to make it fit 100x100. Aspect ratio is always preserved. Images are never enlarged. When actual
// resampling is done the JPEG is returned. If the image already fits desirable dimentions the redirect is
// done to original image instead of preprocessing. Specifying just one dimention for resampling is allowed:
// http://server.tld/resample_fitx100/images/my_big_image.gif - will reduce the image to make sure it's width
// is less than or equal to 100px.
date_default_timezone_set("Europe/Moscow");
$lm=filemtime($file);
$lm=date("r", $lm);
if((isset($_SERVER["HTTP_IF_MODIFIED_SINCE"]) && $_SERVER["HTTP_IF_MODIFIED_SINCE"]==$lm) ||
(isset($_SERVER["HTTP_IF_NONE_MATCH"]) && $_SERVER["HTTP_IF_NONE_MATCH"]==md5($lm))) {
header(defined("HTTP_304_HEADER") ? HTTP_304_HEADER : "HTTP/1.x 304 Not Modified");
//header("Status: 304");
set_error_handler("error_catcher");
while (@ob_end_clean());
set_error_handler("error_handler");
exit;
}
$uri=array_pop($regexp);
if(!($size=@getimagesize($file))) { myheader("Location: ".SITE_ROOT.'/'.$uri); exit; }
if(!in_array($size[2], array(1,2,3))) { myheader("Location: ".SITE_ROOT.'/'.$uri); exit; }
$x=$regexp[2]=='x' ? min(1*$regexp[3], $size[0]) : ( (isset($regexp[4]) and $regexp[4]=='x') ? min(1*$regexp[5], $size[0]) : $size[0]);
$y=$regexp[2]=='y' ? min(1*$regexp[3], $size[1]) : ( (isset($regexp[4]) and $regexp[4]=='y') ? min(1*$regexp[5], $size[1]) : $size[1]);
if($x==$size[0] && $y==$size[1]) { myheader("Location: ".SITE_ROOT.'/'.$uri); exit; }
list($x, $y)=$x/$y<($ar=$size[0]/$size[1]) ? array($x, $x/$ar) : array($y*$ar, $y);
$dest = imagecreatetruecolor((int)$x, (int)$y);
if(function_exists("imageantialias")) imageantialias($dest, TRUE);
$src=$size[2]==1 ? imagecreatefromgif($file) : ($size[2]==2 ? imagecreatefromjpeg($file) : imagecreatefrompng($file));
imagecopyresampled($dest, $src, 0, 0, 0, 0, (int)$x, (int)$y, $size[0], $size[1]);
myheader("Cache-Control: public");
myheader("Content-Type: image/jpeg");
myheader("Last-Modified: {$lm}");
myheader("ETag: ".md5($lm));
imagejpeg($dest, '', defined("JPEG_RESAMPLING_QUALITY") ? JPEG_RESAMPLING_QUALITY : 75);
exit;
}
publish(PATH);
?>
Если еще какие конфиги, так выложу.
Возможно проблема в коректной работе mysql и php?
Вообще линки меню формируються в файле
_menu2.php
<table border="0" width="100%" cellpadding="5">
<?
//-------------------------------
$foo=$DB->resolve("menu2");
$vList=get_multilevel_menu($foo, 0, 100);
foreach($vList as $v):
//-------------------------------
?>
<tr>
<td width="100%" class="<?= $v['inpath'] ? 'ActiveTd': 'VeryLiteTd' ?>" style="padding-left: <?= $v["level"]*8+20 ?>px; padding-right: 10px;">
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td valign="top" style="padding-top: 2px;"><img border="0" src="images/bullet<?= $v['inpath'] ? '3': '2' ?>.gif" width="7" height="8"></td>
<td style="padding-left: 7px;"><a href="<?= $v["link"] ?>" class="<?if($v["level"]==0):?>menu<?else:?>menu4<?endif;?>"><?= $v["inpath"] ? "<font color=#005255><u>": "" ?><?= $v["title"] ?><?= $v["inpath"] ? "</u></font>": "" ?></a></td>
</tr>
</table>
</td>
</tr>
<?
//-------------------------------
endforeach;
unset($foo, $vList);
//-------------------------------
?>
</table>
А что за движок вообще?
В этом файле в строке
<td style="padding-left: 7px;"><a href="<?= $v["link"] ?>" class="<?if($v["level"]==0):?>menu<?else:?>menu4<?endif;?>"><?= $v["inpath"] ? "<font color=#005255><u>": "" ?><?= $v["title"] ?><?= $v["inpath"] ? "</u></font>": "" ?></a></td>
как раз и формируется ссылка, вот куда дальше копать не понятно?
Честно говоря не знаю. Еще до меня какая-то компания делала сайт, потом кто-то переделывал... Вообщем концов не найти.
P.S. Попробовал еще и на убунту , такая же фигня...
А что в базе лежит в menu2?
что значит в базе лежит ?
в mysql ?
Ага, там данные читаются из базы и подставляются в цикле в виде параметров
как посмотреть?
Ну, не знаю... MySQL Administrator, например
А можно вот так:
<?
//-------------------------------
$foo=$DB->resolve("menu2");
$vList=get_multilevel_menu($foo, 0, 100);
foreach($vList as $v):
echo $v['vlink'];
//-------------------------------
?>
и посмотреть, что на экран выведется
Вот вывод:
/test.php: line 1: ?: No such file or directory
./test.php: line 2: //-------------------------------: No such file or directory
./test.php: line 3: syntax error near unexpected token `('
./test.php: line 3: `$foo=$DB->resolve("menu2");'
Вы меня не поняли! Нужно в файл _menu2.php вставить строку echo $v['vlink']; там, где она в моем предыдущем посте находится
извеняюсь...
только где тогда результат смотреть?
На странице сайта проявились
services projects products publications inventions
оно и должно по этим ссылкам проходить, эти php страницы в папке templates лежат
а получается что физически работает только если будет
?services ?projects ?products ?publications ?inventions
Да, я не подумал... Вообще-то результаты должны были распечататься помимо самого меню еще где-нибудь на странице. Вот еще что. Если в браузере мышку к любой ссылке подвести, то какой при этом линк в статусной строке браузера показывается?
http://localhost/servicesА вот в админской части сайта, линки сами формируються с ?
http://localhost/admin/?productsОстается только предположить, что что-то с базой...
CMS от компании М.Дизайн DNSite 4.0
у них на сайте полазил и ничего не нашел....
То есть не правильно снят дамп?
а затем соответственно не импортирован? Так?
Снимал phpMyAdmin`ом и соответственно им закидывал
и вот вопрос как же тогда вообще сайт показывает?
Или воозможно не соответствие не которых таблиц?
Тут ничего не могу сказать... Единственный выход - найти в базе тем же phpMyAdmin`ом таблицу, предположительно называющуюся menu2 и посмотреть, чему равны там параметры link, inpath, title для всех пунктов меню
Разобрался...
Проблема оказалась в том что не был включен модуль rewrite и небольшая неточность в конфиге default-server.