白色死亡屏幕,Twig_Node_Expression _未找到常量

时间:2016-03-28 19:23:44

标签: php linux xampp twig lampp

我在Windows环境中有一个我在XAMPP中制作的网站,现在仍然可以正常工作。但是我已经使用linux将其切换到LAMP。现在我得到了死亡的白色屏幕。我读了here我应该使用这段代码;

error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

在我的index.php文件的顶部显示错误。我已经做了但现在得到了错误;

Fatal error: Class 'Twig_Node_Expression_Constant' not found in /var/www/vendor/twig/twig/lib/Twig/ExpressionParser.php on line 206

我不确定如何修复此问题,因为此文件位于vendor文件夹中。如前所述它似乎在Windows上的XAMPP上工作正常,但在Linux上我不断收到此错误和白屏。我还看了herehere,但这些链接似乎与我访问的第一个显示错误的链接相同

<?php

error_reporting(E_ALL);
ini_set('display_errors',TRUE);
ini_set('display_startup_errors', TRUE);
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 {
        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('/');
    }else{
        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();

?>

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.24",
        "symfony/security-csrf": "^3.0",
        "stripe/stripe-php": "3.*"
    }
}

解决方案:

经过互联网阅读后,我设法解决了这两个问题。

1)对于第一个问题,我正在复制composer.json文件和vendor目录,只是期望它们能够正常工作。但是正如上面评论中提到的@Federico我只是复制了我的composer.json文件并运行了作曲家更新。这解决了TWIG_NODE_EXPRESSION_CONSTANT错误。

2)我提到的第二个错误是当我导航到其他页面时我得到了404;

为此,我在互联网上阅读并了解到您需要编辑httpd.conf文件以使htaccess文件与apache一起使用。但是因为我有一个不同版本的ubuntu意味着apache2.conf文件(/etc/apache2/apache2.conf),所以我改变了代码;

来自这个

<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>

到这个

<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>

然而在此之后我仍然收到500内部错误。所以我发现/etc/apache2/apache2/sites-available/000-default.conf(在某些版本上可能/etc/apache2/sites-available/default这不是我正在使用的ubuntu 14.04上的情况)需要将上面的代码插入其中。但是,当我根据ubuntu的说明安装了灯泡时,这个/etc/apache2/apache2/sites-available/000-default.conf文件已复制到/etc/apache2/apache2/sites-available/mysite.conf,这是我在代码中添加的地方;

<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>

这终于让它发挥作用了。不知道为什么apache改变了他们的目录/文件约定,猜测它与不同的版本升级有关。

0 个答案:

没有答案