Белый экран смерти, Twig_Node_Expression _Constant не найден

У меня был сайт, который я делал в XAMPP в среде Windows, который работал и работает до сих пор. Однако я переключил его на LAMP с помощью Linux. И теперь я получаю белый экран смерти. Я прочитал Вот что я должен использовать этот код;

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

Я не уверен, как это исправить, так как этот файл находится в папке поставщика. Как упоминалось ранее, кажется, что он отлично работает на XAMPP в Windows, но в Linux я получаю эту ошибку и белый экран. Я тоже посмотрел Вот а также Вот но эти ссылки как будто говорили то же самое, что и первая ссылка, которую я посетил для отображения ошибок

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

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]