douliao2493 2016-03-31 23:17
浏览 35

使用php的Apache2服务器找不到子目录

I am trying to deploy a PHP app to my DigitalOcean server, running Ubuntu 14.04 with apache2 and php5

First let me mention that the application works perfectly on localhost using the built-in php-server

I am able to hit my index.php no problem by visiting "site.com/", but it gives me 404 on every other php file. I get 404 too when going directly to site.com/index.php My application uses a simple PHP-router to redirect to my controller which handles the views.

The apache server is set to point to /var/www/my_site/public

This is the file structure: File structure

This is my index.php:

<?php
use App\Core\Autoloader;
use App\Core\Container;
use App\Core\Router;
/*************
*   CONFIG   *
*************/
error_reporting(-1);
// dev only
ini_set('display_errors', 1);
define('SCRIPT_DEBUG', true);
define('VIEW_DIR', realpath(__DIR__ . '/../views'));
define('CONFIG_DIR', realpath(__DIR__ . '/../config/'));
/***********
*   INIT   *
***********/
session_start();
require __DIR__ . '/../App/Core/Autoloader.php';
require CONFIG_DIR . '/db.php';
$dbh = new PDO('mysql:host=127.0.0.1;dbname=' . $db_name, $db_user, $db_pass);
$dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
$loader = new Autoloader();
$loader->addNamespace('App', __DIR__ . '/../App');
$loader->register();
$container = new Container();
$container->bindArguments('App\\Model\\User',   ['dbh' => $dbh]);
$container->bindArguments('App\\Model\\Image',  ['dbh' => $dbh]);
/**************
*   ROUTING   *
**************/
$router = new Router();
$router->addRoute('GET', '/',               ['App\\Controller\\SessionController', "redirect"   ]);
$router->addRoute('GET', '/log_in',         ['App\\Controller\\SessionController', "newSession" ]);
$router->addRoute('GET', '/log_out',        ['App\\Controller\\SessionController', "destroy"    ]);
$router->addRoute('GET', '/sign_up',        ['App\\Controller\\UserController',    "signUp"     ]);
$router->addRoute('GET', '/edit_user',      ['App\\Controller\\UserController',    "edit"       ]);
$router->addRoute('GET', '/account',        ['App\\Controller\\UserController',    "account"    ]);
$router->addRoute('GET', '/users' ,         ['App\\Controller\\UserController',    "users"      ]);
$router->addRoute('GET', '/upload',         ['App\\Controller\\ImageController',   "upload"     ]);
$router->addRoute('GET', '/gallery',        ['App\\Controller\\ImageController',   "gallery"    ]);
$router->addRoute('POST', '/log_in',        ['App\\Controller\\SessionController', "create"     ]);
$router->addRoute('POST', '/sign_up',       ['App\\Controller\\UserController',    "create"     ]);
$router->addRoute('POST', '/delete_user',   ['App\\Controller\\UserController',    "destroy"    ]);
$router->addRoute('POST', '/edit_user',     ['App\\Controller\\UserController',    "update"     ]);
$router->addRoute('POST', '/upload',        ['App\\Controller\\ImageController',   "save"       ]);
$router->addRoute('POST', '/delete_image',  ['App\\Controller\\ImageController',   "destroy"    ]);
// Convert i.e. "/foo%40bar?id=1" to "/foo@bar"
$uri = rawurldecode(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH));
$route = $router->match($_SERVER['REQUEST_METHOD'], $uri);
if ($route === null) {
    $route = [
    'handle' => ['App\\Controller\\ErrorController', 'error404'],
    'arguments' => []
    ];
}
$controller = $container->create($route['handle'][0]);
$container->call([$controller, $route['handle'][1]], $route['arguments']);
  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体
    • ¥88 实在没有想法,需要个思路
    • ¥15 MATLAB报错输入参数太多
    • ¥15 python中合并修改日期相同的CSV文件并按照修改日期的名字命名文件
    • ¥15 有赏,i卡绘世画不出
    • ¥15 如何用stata画出文献中常见的安慰剂检验图
    • ¥15 c语言链表结构体数据插入
    • ¥40 使用MATLAB解答线性代数问题
    • ¥15 COCOS的问题COCOS的问题
    • ¥15 FPGA-SRIO初始化失败