【问题标题】:Site works locally on XAMPP but not when uploaded to the web error 500 htaccess站点在 XAMPP 上本地运行,但在上传到网络时无法运行错误 500 htaccess
【发布时间】:2016-03-30 16:04:24
【问题描述】:

我有一个网站,我一直在本地使用 Windows 中的 XAMPP 开发它,它运行良好。没有错误它运行完美。

所以我决定把它上传到网上。但现在我收到一个错误 500。我最初的想法是它与 .htaccess 文件有关,但它在我的 htdocs 文件中的 xampp 上运行良好。

我看了this,它让我思考。当我通过 ftp 上传我的网站时,它会进入文件夹 public_html/,所以我需要为此配置我的 .htaccess 文件吗?

我的 .htaccess 的代码如下所示;

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]

我的代码正在运行用于路由的 silex 和 symfony 框架,所以不确定它是否与此有关?

下面是我的 index.php 文件

<?php
date_default_timezone_set('Europe/London');
require_once __DIR__.'/vendor/autoload.php';
require_once 'src/provider/AuthenticationServiceProvider.php';
require_once 'src/provider/TutorServiceProvider.php';


use Symfony\Component\HttpFoundation\Request;

$app = new Silex\Application();
$app['debug'] = true;

$app->register(new Silex\Provider\TwigServiceProvider(), array(
    'twig.path' => __DIR__.'/views',
));

$app->register(new Silex\Provider\SessionServiceProvider());

$app->register(new Tutor\Provider\AuthenticationServiceProvider());

$app->register(new Tutor\Provider\TutorServiceProvider());

$app->get('/', function() use($app) {
    $tutors = $app['tutor']->get_tutors();
    return $app['twig']->render('index.twig', array('active_page' => 'home', 'is_user_logged_in' => $app['auth']->is_user_logged_in(), 'tutors' => $tutors));
});

$app->get('/about-us', function() use($app) {
    return $app['twig']->render('about-us.twig', array('active_page' => 'about-us', 'is_user_logged_in' => $app['auth']->is_user_logged_in()));
});

$app->get('/home-tuition', function() use($app) {
    return $app['twig']->render('home-tuition.twig', array('active_page' => 'home-tuition', 'is_user_logged_in' => $app['auth']->is_user_logged_in()));
});

$app->get('/group-tuition', function() use($app) {
    $groups = $app['tutor']->get_group_tuition($app['auth']->get_user()['email']);
    return $app['twig']->render('group-tuition.twig', array('active_page' => 'group-tuition', 'is_user_logged_in' => $app['auth']->is_user_logged_in(), 'groups' => $groups, 'user' => $app['auth']->get_user()));
});

$app->get('/group-tuition/{tutoremail}/{starttime}', function($tutoremail, $starttime) use($app) {
    $user = $app['auth']->get_user();
    if (null !== $user && ($user['type'] == 'admin' || $user['email'] == $tutoremail)) {
        $group = $app['tutor']->get_group_tuition_details($tutoremail, $starttime);
        return $app['twig']->render('group-tuition-details.twig', array('active_page' => 'group-tuition', 'is_user_logged_in' => $app['auth']->is_user_logged_in(), 'group' => $group));
    } else {
        return $app->redirect('/group-tuition');
    }
});

$app->get('/contact-us', function() use($app) {
    return $app['twig']->render('contact-us.twig', array('active_page' => 'contact-us', 'is_user_logged_in' => $app['auth']->is_user_logged_in()));
});

$app->get('/tutor/{username}', function($username) use($app) {
    $tutor = $app['tutor']->get_tutor($username);
    if (null !== $tutor) {
        return $app['twig']->render('tutor.twig', array('active_page' => 'tutor', 'is_user_logged_in' => $app['auth']->is_user_logged_in(), 'tutor' => $tutor));
    } else {
        return $app->redirect('/');
    }
});

$app->get('/login', function() use($app) {

    if ($app['auth']->is_user_logged_in()) {
        return $app->redirect('/');
    } else {
        return $app['twig']->render('login.twig', array('active_page' => 'login', 'is_user_logged_in' => $app['auth']->is_user_logged_in()));
    }
});

$app->post('/login', function(Request $request) use($app) {
    $email = $app['request']->get('email');
    $password = $app['request']->get('password');
    if ($app['auth']->login($email, $password)) {
        return $app->redirect('/');
    } else {
        $app['session']->getFlashBag()->add('error','There was an error with you details please try again');
        return $app->redirect('/login');
    }
});

$app->get('/logout', function() use($app) {
    $app['auth']->logout();
    return $app->redirect('/');
});

$app->get('/register', function() use($app) {
    if ($app['auth']->is_user_logged_in()) {
        return $app->redirect('/');
    } else {
        return $app['twig']->render('register.twig', array('active_page' => 'register', 'is_user_logged_in' => $app['auth']->is_user_logged_in()));
    }
});


$app->post('/register', function(Request $request) use($app) {
    $email = $app['request']->get('email');
    $password = $app['request']->get('password');
    $name = $app['request']->get('name');
    $address = $app['request']->get('address');
    $phone = $app['request']->get('phone');
    if ($app['auth']->register($email, $password, $name, $address, $phone, 'student')) {
        return $app->redirect('/');
    } else {
        return $app->redirect('/register');
    }
});



$app->get('/reset-password', function() use($app) {
        return $app['twig']->render('reset-password.twig',array('active_page' => 'reset-password','is_user_logged_in' => $app['auth']->is_user_logged_in()));
});

$app->post('/reset-password', function(Request $request) use($app){
    $email = $app['request']->get('email');
    if($app['auth']->sendEmail($email)){
        return $app->redirect('/reset-password');
    }
});

$app->get('/admin', function() use($app) {
    $tutor = $app['tutor']->get_tutors();
    $user = $app['auth']->get_user();
    if (null !== $user && $user['type'] == 'admin' && null !== $tutor){
        return $app['twig']->render('admin.twig', array('active_page' => 'admin', 'is_user_logged_in' => $app['auth']->is_user_logged_in(), 'contacts' => $app['tutor']->get_user(), 'items' => $app['tutor']->get_user_id(), 'tutor' => $tutor));
    }else{
        return $app->redirect('/login');
    }
});



$app->post('/charge', function(Request $request) use($app) {
    $description = $app['request']->get('description');
    $tutoremail = $app['request']->get('tutoremail');
    $starttime = $app['request']->get('starttime');
    $user = $app['auth']->get_user();
    $studentemail = $user['email'];

    // Set your secret key: remember to change this to your live secret key in production
    // See your keys here https://dashboard.stripe.com/account/apikeys
    \Stripe\Stripe::setApiKey("sk_test_fktchFYkd0XywraJftt8Z9uc");

    // Get the credit card details submitted by the form
    $token = $app['request']->get('stripeToken');

    // Create the charge on Stripe's servers - this will charge the user's card
    try {
        $charge = \Stripe\Charge::create(array(
            "amount" => 2000, // amount in cents, again
            "currency" => "gbp",
            "source" => $token,
            "description" => $description . ' paid by ' . $studentemail . ' for session ' . $tutoremail . '/' . $starttime
        ));
        $app['tutor']->add_group_tuition_booking($tutoremail, $starttime, $studentemail);
    } catch(\Stripe\Error\Card $e) {
        // The card has been declined
    }
    return $app->redirect('/group-tuition');
});

$app->run();

我还阅读了here,这表明命名空间在 5.3 之前的 php 版本中不可用,因此我使用包含的 index.php 文件检查了主机正在运行的 php 版本;

<?php 
phpinfo();
?>

这成功返回了 5.3.28 版本,所以假设它不能归结为这个。

下面是我的 composer.json 文件;

{
    "require": {
        "silex/silex": "~1.1",
        "symfony/browser-kit": "~2.3",
        "symfony/console": "~2.3",
        "symfony/config": "^3.0",
        "symfony/css-selector": "~2.3",
        "symfony/dom-crawler": "~2.3",
        "symfony/filesystem": "~2.3",
        "symfony/finder": "~2.3",
        "symfony/form": "^3.0",
        "symfony/locale": "~2.3",
        "symfony/process": "~2.3",
        "symfony/security": "~2.3",
        "symfony/serializer": "~2.3",
        "symfony/translation": "^3.0",
        "symfony/validator": "^3.0",
        "symfony/monolog-bridge": "~2.3",
        "symfony/twig-bridge": "~2.3",
        "doctrine/dbal": ">=2.2.0,<2.4.0-dev",
        "swiftmailer/swiftmailer": "5.*",
        "twig/twig": "^1.23",
        "symfony/security-csrf": "^3.0",
        "stripe/stripe-php": "3.*",
        "phpmailer/phpmailer": "~5.2" 
    }
}

【问题讨论】:

  • 您检查过您的错误日志文件吗?它说什么?
  • 当在 xampp 中显示自 2016 年 3 月 26 日以来没有错误时,我实际上不确定如何检查主机上的错误日志文件。有什么办法可以做到这一点?
  • 在 CentOS 上是 /var/log/php-fpm/,它应该在其他地方类似,并且很容易在特定系统上搜索它。提示:像这样使用tail tail /var/log/php-fpm/www-error.log
  • 抱歉,我的回复一定令人困惑,我检查了 xampp 中的错误日志,自 2016 年 3 月 26 日以来没有任何错误,因为我的网站在本地运行良好。但是,由于在我将其上传到他们的服务器后它无法在我的主机提供商上运行,我不确定如何在那里检查错误日志?
  • 如果你有 SSH 访问权限,那么就像我上面写的那样。如果没有,请查看他们的管理面板(如 cPanel 或 Plesk)。他们肯定有某个选项可以向您显示日志文件的内容...

标签: php apache .htaccess symfony mod-rewrite


【解决方案1】:

如果你看这里: http://symfony.com/doc/current/reference/requirements.html 你会看到这个:

PHP 需要是 PHP 5.5.9 的最低版本

你写道phpinfo()返回了这个:

成功返回5.3.28版本

那么,您使用的是旧版本的 Symfony 吗?起初看起来你需要升级 PHP(或降级 Symfony...)

【讨论】:

  • 我刚刚在 xampp 中检查了我的 php 版本,我有 php 版本 5.6.15。我使用的网络主机有 php 版本 5.3.28。所以我想这就是问题所在?我将不得不接受我的网络主机。我已经上传了我的 composer.json 文件
  • 我想是的。我建议你向你的主机请求升级 PHP,因为例如,特性是在 PHP 5.4(和类似的)中引入的,所以如果你使用它会破坏你的代码等等......
  • 非常感谢,这取决于版本。我没有意识到我可以在我的 cpanel 中更改 php 的版本。花了一整天的时间试图弄清楚这一点。
  • 很高兴能帮上忙。
猜你喜欢
  • 2018-05-11
  • 1970-01-01
  • 1970-01-01
  • 2016-09-16
  • 2015-05-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-23
  • 2016-04-02
相关资源
最近更新 更多