2015-04-29 3 views
3

Я пишу социальную сеть с архитектурой MVC она работает Localhost (WampServer) правильно, но когда я загрузить его на реальном хосте я получаю эту ошибку в http://example.com/архитектура MVC сценарий

Warning: require_once(views/index/index.php): failed to open stream: No such file or directory in /home3/farazenc/public_html/fb/views/index.php on line 14 

Fatal error: require_once(): Failed opening required 'views/index/index.php' (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home3/farazenc/public_html/fb/views/index.php on line 14 

и мой метод не работает, например, когда я перейти http://example.com/index/register должны показать регистрационную форму, но показать 404

мой основной файл: .htaccess

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L] 

index.p л.с.

<?php 
session_start(); 
require_once './config.php'; 
require_once './lib/database.php'; 
require_once ('./lib/function.php'); 
$connect = database::connect(); 

function __autoload($classname) { 
    $directrey = array('controllers', 'models'); 
    for ($i = 0; $i < sizeof($directrey); $i++) { 
     if (file_exists($directrey[$i] . '/' . $classname . '.php')) { 
      require_once ($directrey[$i] . '/' . $classname . '.php'); 
     } 
    } 
} 

if (isset($_GET['url'])) { 
    $url = $_GET['url']; 
    $split = preg_split('/[\/\\\]/', $url); 
    if (sizeof($split) == 1) { 
     if (!file_exists('controllers/' . $split[0] . 'Controller.php')) { 
      require_once ('./controllers/CheckPage.php'); 
      CheckPageController::check($split[0]); 
     } else { 

      $classname = $split[0] . 'Controller'; 
      $Controller = new $classname(); 
     } 
    } elseif (sizeof($split) == 2) { 
     if (file_exists('controllers/' . $split[0] . 'Controller.php')) { 
      if (empty($split[1])) { 

       $classname = $split[0] . 'Controller'; 
       $Controller = new $classname(); 
      } else { 

       $classname = $split[0] . 'Controller'; 
       $Controller = new $classname(); 
       if (method_exists($Controller, $split[1])) { 
        $Controller->$split[1](); 
       } else { 
        require_once ('./views/404.php'); 
       } 
      } 
     } else { 
      require_once ('./views/404.php'); 
     } 
    } 
} else { 
    require_once ('./controllers/IndexController.php'); 
    $IndexController = new IndexController(); 
} 
if (isset($_POST['Action'])) { 
    $ajax = new Ajax(); 
    $ajax->$_POST['Action'](); 
} 

Controller.php

<?php 

abstract class Controller { 

    public function render($file) { 
     if (!isset($_POST['Action'])) { 
      global $split; 
      $d = empty($split) ? 'index' : $split[0]; 
      $content = "views/$d/$file.php"; 
      require_once ('views/index.php'); 
     } 
    } 
    public function user_views($file){ 
     if (isset($_SESSION['user'])){ 
      require_once ('views/user/'.$file.'.php'); 
     } else { 
      require_once ('views/index.php'); 
     } 
    } 
    public function admin_views($file){ 
     if (isset($_SESSION['admin'])){ 
      global $split; 
      $d = empty($split) ? 'index' : $split[0]; 
      $content = "views/$d/$file.php"; 
      require_once ("views/admin/admin.php"); 
     } else { 
      require_once ('views/admin/login.php'); 
     } 
    } 
} 

IndexController.php

class IndexController extends Controller { 

    public function __construct() { 
     global $split; 
     if (empty($split[1])) { 
      $this->render('index'); 
     } 
    } 

    public function register() { 
     $this->render('register'); 
    } 
} 

просмотров/index.php:

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="UTF-8"> 
    <title>social network</title> 
    <link href="<?php echo URL ?>/css/style.css" rel="stylesheet"> 
    <script type="text/javascript" src="<?php echo URL ?>/js/ajax.js"></script> 
    <script type="text/javascript" src="<?php echo URL ?>/js/jquery.js"></script> 
</head> 
<body> 
<div style="width:1000px;height:650px;margin:50px auto;"> 
    <div id="content"> 
     <?php 
     require_once($content); 
     ?> 
    </div> 
    <div id="ads" style="margin-right:15px;"> 
     <img src="<?php echo URL ?>/images/ads-120.jpg"> 
     <img src="<?php echo URL ?>/images/ads-120.jpg"> 
    </div> 
</div> 
</body> 
</html> 

чем проблема и как я могу это исправить ?

+0

Проверьте права доступа на сервере. '0755' для каталогов и' 0644', по крайней мере, для файлов, которые вы включили. –

+0

Проверьте права доступа к серверу. Проверьте, установлен ли mod_rewrite или нет? Только то, что htaccess будет работать –

+0

yes Разрешения мод переписывания в порядке – Mohammad

ответ

1

У меня была аналогичная проблема в прошлом. Если правильное разрешение файла (755/644), я советую вам проверить SELinux (для RHEL/CentOS и т. Д.). SELinux по умолчанию настроен на разрешение httpd работать с файлами в каталоге/var/www/html, но не за пределами этого каталога.

Если такое программное обеспечение работает (попробуйте команду "sestatus"), вы можете отключить его, открыв SELinux конфигурационный файл (обычно/и т.д./SELinux/конфигурации) и изменение линии:

SELINUX=enforcing 

к:

SELINUX=disabled 

а затем перезагрузите систему. что команда

Afted «sestatus» должен показать что-то вроде этого:

SELinux status:    disabled 

и теперь проверить ваш код еще раз (но убедитесь, что вы включите SELinux после этого тестов). , если это поможет, вам просто необходимо сконфигурировать его соответствующим образом, используя команду:

$ chcon -R --type=httpd_sys_content_t /path_to_document_root_of_you_great_site 

или более постоянного решения (лучший способ):

$ semanage fcontext -a -t httpd_sys_content_t '/path_to_document_root_of_you_great_site(/.*)?' 
$ restorecon -R -v /path_to_document_root_of_you_great_site 

, если вам нужно, что HTTPD может изменить файлы с помощью «httpd_sys_rw_content_t "вместо" httpd_sys_content_t "

PSЯ прошу прощения за мой английский

Артикул:

+0

исправлено ... я надеюсь –

Смежные вопросы