LinuxForum.Fans
Тема

[Решено] PHP+MySQL+Apache+CMS

Автор: prostornet 19 сообщений 5870 просмотров
#14704

Есть сайт построен на сторонем движке (система генту), работает все на ура.
Возникла необходимость поднять еще один для тестов и экспериментов.
Ввиду того что собираемся менять используемую ось, решили подвергнуть эксперименту.
Подняли LAMP на openSuSE, перенесли базу mysql, и вроде все работает только вот с маленькой ошибкой
ссылка меню ведет по адресу http://localhost/services - результат ошибка нет такой страницы
а вот если поправить http://localhost/?services - тогда все впорядке и нормально работает

и я так понимаю скорей всего дело не в движке, а в настройках PHP или MySQL
вот только что, не понятн?

#14738

А в исходниках глянуть? Как я понимаю, сайт на PHP написан?

#14760

Если речь идет про исходники сайта, так я не силен в php, да и знакомых у меня, которые бы шарили нет.
Но думаю что дело не в них, так как на генту работает, сейчас вот еще на федоре 12 проверяли, работает.
config.php

text

<?                                       
#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

text

<?                                       
// $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

text

        <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>

#14763

А что за движок вообще?

#14768

В этом файле в строке
<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. Попробовал еще и на убунту , такая же фигня...

#14780

А что в базе лежит в menu2?

#14783

что значит в базе лежит ?
в mysql ?

#14785

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

#14788

как посмотреть?

#14790

Ну, не знаю... MySQL Administrator, например

А можно вот так:

text
<?
//-------------------------------
$foo=$DB->resolve("menu2");
$vList=get_multilevel_menu($foo, 0, 100);
foreach($vList as $v):

echo $v['vlink']; //------------------------------- ?>

и посмотреть, что на экран выведется

#14795

Вот вывод:

text

/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");'
#14796

Вы меня не поняли! Нужно в файл _menu2.php вставить строку echo $v['vlink']; там, где она в моем предыдущем посте находится

#14798

извеняюсь...
только где тогда результат смотреть?

На странице сайта проявились

text
services projects products publications inventions

оно и должно по этим ссылкам проходить, эти php страницы в папке templates лежат
а получается что физически работает только если будет

text
?services ?projects ?products ?publications ?inventions
#14810

Да, я не подумал... Вообще-то результаты должны были распечататься помимо самого меню еще где-нибудь на странице. Вот еще что. Если в браузере мышку к любой ссылке подвести, то какой при этом линк в статусной строке браузера показывается?

#14813
text
http://localhost/services

А вот в админской части сайта, линки сами формируються с ?

text
http://localhost/admin/?products
#14816

Остается только предположить, что что-то с базой...

#14817

CMS от компании М.Дизайн DNSite 4.0
у них на сайте полазил и ничего не нашел....

То есть не правильно снят дамп?
а затем соответственно не импортирован? Так?

Снимал phpMyAdmin`ом и соответственно им закидывал
и вот вопрос как же тогда вообще сайт показывает?
Или воозможно не соответствие не которых таблиц?

#14824

Тут ничего не могу сказать... Единственный выход - найти в базе тем же phpMyAdmin`ом таблицу, предположительно называющуюся menu2 и посмотреть, чему равны там параметры link, inpath, title для всех пунктов меню

#16264

Разобрался...
Проблема оказалась в том что не был включен модуль rewrite и небольшая неточность в конфиге default-server.

Войдите или зарегистрируйтесь, чтобы ответить.