Bitrix 500 ошибка ajax

Просмотров: 35156
Дата последнего изменения: 22.07.2020

Сложность урока:

3 уровень — средняя сложность. Необходимо внимание и немного подумать.

4

5

Ошибка сервера может быть вызвана различными причинами, поэтому ее диагностика достаточно сложна и трудоемка. Это не является ошибкой «1С-Битрикс: Управление сайтом». Она часто возникает на разделяемом хостинге из-за ограничения ресурсов системы.

При возникновении ошибки сервера в первую очередь необходимо просмотреть файл сервера error.log. В этом файле может содержаться строка с кодом ошибки.

  • Типичным примером причины возникновения ошибки сервера может быть превышение разрешенных прав на хостинге.

    Например, происходит попытка выполнить файл с атрибутами, не разрешёнными для запуска на сервере (например, файл имеет атрибуты 0755, а допускается 0711).

  • Также возможной причиной может быть наличие лимита по времени на исполнение php-скриптов;
  • Или у системы нет прав на запись или чтение файла и др.
  • Другой распространенной причиной возникновения внутренней ошибки сервера является нарушение конфигурации сервера или попытка использования неразрешенных инструкций, например, в файле .htaccess. В этом случае необходимо закомментировать либо удалить строку, содержащую неразрешенную директиву, в соответствующем файле (например, .htaccess).
  • Обратите внимание, если PHP работает как CGI, то 500 ошибка на сервере может быть вызвана фатальной ошибкой PHP. В этом случае рекомендуется выполнить проверку программного кода и диагностировать ошибку.
  • Внутренняя ошибка сервера может возникнуть при запуске из-под Apache CGI-скрипта, время исполнения которого превышает время, отведенное на выполнение скрипта в настройках сервера.

Таким образом, всё зависит от конфигурации сервера.

Важно понимать, указанные ограничения не настраиваются через настройки PHP в php.ini.

В нормальной ситуации такая ошибка и её причина фиксируется в логах сервера. В этом случае пользователю рекомендуется обратиться к хостеру с просьбой указать, что является причиной возникновения ошибки и попросить её устранить (например, увеличить ресурсы). Если хостер не смог найти решение — обратитесь в техподдержку компании «1С-Битрикс» с точным указанием того, как ошибка происходит и какие причины указал хостер. Без указания причины ошибки техподдержка помочь вам не сможет.

Я из базы достаю записи определенного пользователя. При желании пользователь может оставить комментарий к записи. Есть кнопка «Добавить комментарий», при нажатии на которую вываливается textarea с кнопкой «Добавить». Вот все это хочу сделать ajaxom. Текст из textarea я получаю, но все это дело в бд не попадает.

Вот скрипт:

$('.comment').click(function(){
		
	var id_advert = $(this).val();
	//console.log(id_advert);
	$(this).html("<textarea rows=10 cols=70 name='add_comment' class='add_comment' maxlengh='256' autofocus> </textarea><br><button type='submit' name='add' class='add'> Добавить сообщение</button>");
	$.get('edit_advert',{comment:id_advert},function()
		{
	$('.add').click(function(){	
	var params = $('.add_comment').serialize();
console.log(params);
	console.log($.post('add_comment',params));
	
		});
	
		});
});

Вот метод, который должен все это обрабатывать:

public function edit_advert(Request $request)
	{
		$id_advert = $_GET['comment'];
		$id_client = Auth::user()->id;
		$comment = $request->input('add_comment');
		
		Adverts::add_comment($comment,$id_client,$id_advert);
	

		
	}

Вьюшка:

<div class="panel-body">
				@foreach ($remember_adverts_client as $advert)

					<div class="table table-bordered">
                    Объявление добавлено <em> {{$advert->date}} </em> <br>
                    <strong>{{$advert->title}}</strong><br>
                    <strong>Тип недвижимости: </strong>{{$advert->type}}<br>
                    <strong>Количество комнат: </strong>{{$advert->quantity_room}}<br>
                    <strong>Город: </strong>{{$advert->city}}<br>
                   <strong> Описание: </strong> {{$advert->description}}<br>
                   <strong> Телефон: </strong>{{$advert->phone}}<br>
                   <!--<form action="edit_advert" method="GET"> -->
                   <button type="submit" value="{{$advert->id_realty}}" name="comment" class="comment"> Добавить комментарий</button>

                   <button type="submit" value="{{$advert->id_realty}}" name="cross"> Перечеркнуть </button>
                   <button type="submit" value="{{$advert->id_realty}}" name="lead">Обвести</button>
                   <button type="submit" value="{{$advert->id_realty}}" name="link">Поделиться ссылкой</button>
                   <!--</form> -->
				@endforeach

И роут:

Route::get('edit_advert','ClientController@edit_advert');
Route::post('add_comment','ClientController@edit_advert')

В чем может быть проблема?

I am receiving an internal server error, status 500 and I don’t know how to troubleshoot. I have added error catch for the ajax call but doesn’t tell me much. How do I add code to understand what is going on inside the requesting file? I have tried doing a var_dump() but nothing happends.

    $('#createpanelbutton').live('click', function(){

        var panelname = $('#panelname').val();
        var user_cat = $('#user_cat').val();
        //var whocan = $('#whocan').val();
        var errors='';
        if(panelname=='')
            errors+='Please enter a Brag Book name.<br/>';
        if(user_cat=='0')
            errors+='Please select a category.<br/>';
        if(errors!=''){
            $('#panel_errors2').html('<span class="panel_brag_errors">'+errors+'</span>');
            return false;
        }else{

         $('#createpanelbutton').val('Creating Brag Book...');
            $.ajax({
                async:false,
                dataType:'json',
                type: 'POST',
                url:baseurl+'createpanel.php',
                error:function(data,status,jqXHR){ alert("handshake didn't go through")},
                data:'name='+encodeURIComponent(panelname)+'&category='+encodeURIComponent(user_cat)+'&collaborator='+encodeURIComponent('me'),
                success:function(response){
                    if(response.status=='success')
                        location.href=response.url;
                    if(response.status=='failure')
                        $('#panel_errors2').html('<span class="panel_brag_errors">'+response.message+'</span>');
                }
            });
        }
    });

Ajax call to to php file createpanel.php:

 <?php

include_once('s_header2.php');

if($_POST){

    if($_POST['name'] == ''){
            $msg = "Please enter Brag Book name.";
            $result = array("status"=>'failure', "message"=>$msg);
    }elseif($_POST['category'] == ''){
            $msg = "Please select category.";
            $result = array("status"=>'failure', "message"=>$msg);
    }else{

        $db = Core::getInstance();
        $dbUp = $db->dbh->prepare("SELECT id FROM ".USERS_PANEL." WHERE user_id = :uID and title = :tit");         
        $result = '2';
        $dbUp->execute(array(':uID'=>$_SESSION['sesuid'],':tit'=>$_POST['name']));
        $result = '3';
        $numrows = $dbUp->rowCount();
        $result = '4';
        if($numrows == 0){
         $result = '5';
        $dbIn = $db->dbh->prepare("INSERT INTO ".USERS_PANEL." (`user_id`,`title`,`category_id`,`desc`,`type`,`friend_id`) VALUES (?, ?, ?, ?, ?, ?)");

         $dbIn->execute(array($_SESSION['sesuid'],$_POST['name'],$_POST['category'],$_POST['panel_desc'],$_POST['collaborator'],$_POST['jj']));

         $lid = $db->dbh->lastInsertId();            
        //header("Location: ".BASE_URL.addslashes($_POST['bname'])."-".$lid."/");

        $panelurl=BASE_URL.$_POST['name']."-".$lid."/";
        $result = array("status"=>'success', "url"=>$panelurl, "name"=>$_POST['name'], "id"=>$lid);

        }else{              
            $result = array("status"=>'failure', "message"=>'You already have a Brag Book with that name.');
        }
    }

}

echo json_encode($result) ;die;

?>

Я новичок в AJAX, и я просто пробовал некоторые примеры AJAX, но я получаю эту 500 Внутренняя ошибка сервера. Я ищу в Интернете решение, но ничего не получается. Тем не менее, если я изменить тип с POST на GET, он работает нормально.

контроллер:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class testingAjax extends CI_Controller
{
public function index()
{
$this->load->view('testingAjax_view');
}

public function getSomething()
{
$values = $this->input->post('testing');
echo $values;
}
}

JS скрипт

$(document).ready(
function ()
{
$('#callBackBtn').click(function()
{
jQuery.ajax({
type: "POST",
url: "testingAjax/getSomething",
data: {testing: "testing"},
success: function(data) {
$('#responseText').val(data);
},
error: function(xhr, text_status, error_thrown){
alert(error_thrown);
}

})
});
}
);

Посмотреть

<body>
<h3>Testing Ajax</h3>
<div class="entry-wrapper">
<input type="text" id="input_text">
<input type="button" value="Ajax Call Back" id="callBackBtn"/>
</div>
<div class="response_wrapper">
<textarea id="responseText"></textarea>
</div>
</body>

Я запускаю это на xammp. Ниже приведены журналы ошибок Apache (не уверен, полезны они или нет)

[Wed May 13 00:31:53.251642 2015] [core:notice] [pid 25716:tid 456] AH00094: Command line: 'c:\\xampp\\apache\\bin\\httpd.exe -d C:/xampp/apache'
[Wed May 13 00:31:53.257646 2015] [mpm_winnt:notice] [pid 25716:tid 456] AH00418: Parent: Created child process 25724
[Wed May 13 00:31:57.895294 2015] [ssl:warn] [pid 25724:tid 460] AH01909: www.example.com:443:0 server certificate does NOT include an ID which matches the server name
[Wed May 13 00:31:59.065692 2015] [ssl:warn] [pid 25724:tid 460] AH01909: www.example.com:443:0 server certificate does NOT include an ID which matches the server name
[Wed May 13 00:31:59.205786 2015] [mpm_winnt:notice] [pid 25724:tid 460] AH00354: Child: Starting 150 worker threads.

Firebug показал ошибку:

POST http://localhost/ias/testingAjax/getSomething
500 Internal Server Error
30ms

1

Решение

Попробуй с

url:"/testingAjax/getSomething".

Для вызова ajax метод по умолчанию GET а ты не публиковал form или любое значение для сервера, просто сделать ajax-вызов по нажатию кнопки, поэтому это может сработать !!! когда вы изменили тип метода с POST в GET но прежде всего я думаю, что вы должны исправить url

Метод (по умолчанию: «GET»)

Тип: String Метод HTTP, используемый для

запрос (например, «POST», «GET», «PUT»)

увидеть больше здесь http://api.jquery.com/jquery.ajax/

1

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

Я создал свежую копию вашей работы, а здесь простую, которой вы могли бы следовать.

Во-первых, правильно настроить ваш проект.

Сначала я создаю файл .htaccess в корневой папке той же директории, что и index.php, чтобы создать красивый URL

Вот простой файл содержимого .htaccess

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]
</IfModule>

И вам нужно включить расширение / настройку mod_rewrite вашего сервера

Вы можете включить его, найдя appache / httpd.conf

и найдите «LoadModule rewrite_module modules / mod_rewrite.so»

удалите # и сохраните и перезапустите приложение.

Следующим шагом является включение помощника URL

на

приложение / Config / autoload.php

$autoload['helper'] = array('url');

использовать url helper, созданный CI;

Увидеть URL HELPER

Далее нужно настроить контроллер по умолчанию, чтобы сделать это
приложение / Config / routes.php

$route['default_controller'] = 'testingAjax';

Контроллер testingAjax.php

<?php

class testingAjax extends CI_Controller
{
public function index()
{
$this->load->view('testingAjax_view');
}

public function getSomething()
{
$values = $this->input->post('testing');
echo $values;
}
}

Представление testingAjax_view.php

<html>
<head>
<script type="text/javascript">
// get the base url of the project
var BASE_URL = "<?php echo base_url(); ?>";
</script>
</head>
<body>
<h3>Testing Ajax</h3>

<div class="entry-wrapper">
<input type="text" id="input_text">
<input type="button" value="Ajax Call Back" id="callBackBtn"/>
</div>

<div class="response_wrapper">
<textarea id="responseText"></textarea>
</div>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>

<script type="text/javascript">

$(document).ready( function() {

$('#callBackBtn').on('click', function(){
$.ajax({
type: "POST",
url: BASE_URL + "testingAjax/getSomething",
data: {testing: $('#input_text').val()},
success: function(data) {
$('#responseText').val(data);
},
error: function(xhr, text_status, error_thrown){
alert(error_thrown);
}

});

// But if you cannot setup the pretty url
// using .htaccess
// then you can use the
// BASE_URL+ "index.php/" + "testingAjax/getSomething
});
});

</script>

</body>

</html>

1

Просто поместите это в ваш файл .htaccess, который находится в вашем корневом каталоге:

Options +FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]

Замечания:

RewriteBase / здесь важно

0

Рассказываем, как устранить 500 ошибку на сайте на 1С-Битрикс.

«Internal Server Error» — внутренняя ошибка сервера. Она может произойти и на сайте на CMS 1С-Битрикс, WordPress и других. Само название говорит о том, что дело в хостинге.

«Internal Server Error» выводит код ответа 500, а ошибки вызваны проблемами в файлах сайта:

Если проблема в файле .htaccess, при переходе на сайт появится сообщение «Internal server error».

До начала работы над устранением ошибки нужно выяснить причину ее возникновения. Для начала проверьте доступное ОЗУ.

Шаг №1. Проверка доступной оперативной памяти (ОЗУ)

  • Если у вас виртуальный хостинг

На тарифах виртуального хостинга оперативная память общая для всех сайтов. Если один из сайтов превысил лимит, системный администратор отправляет ему уведомление для исправления ситуации.

  • Если у вас виртуальный сервер или выделенный сервер

Перейдите в панель управления виртуальным сервером. На панели меню слева перейдите в Инструменты (1) → Shell-клиент (2). В открывшейся вкладке введите команду «free -h» (3) и нажмите enter.

В столбце «used» (4) в первой строке указана используемая ОЗУ. На скриншоте это 398 МБ. В столбце «free» (5) в первой строке указана свободная ОЗУ. На скриншоте это 3,2 Гб.

Если оперативная память закончилась, возможно, причина в выполняющихся процессах на вашем сервере. Для исправления обратитесь к вашему программисту или в техническую поддержку хостинга.

Если оперативной памяти достаточно, переходите ко второму шагу.

Шаг №2. Проверка наличия ошибок в файле «.htaccess»

Для проверки ошибок в «.htaccess» достаточно просто изменить название этого файла и перейти на сайт. Если сайт начнет работать, в файле есть ошибки.

Для этого в панели управления виртуальным хостингом перейдите в Главное (1) → Менеджер файлов (2). Перейдите в корневую папку сайта (по умолчанию это «www»). Выделите файл «.htaccess» (3) и нажмите кнопку «Атрибуты» (4).

В строке «Имя» измените название — например, напишите «.htaccess_1». Нажмите «Ок», чтобы сохранить изменения.

Перейдите на сайт. Если он заработал, то проблема в файле. Вспомните, какие изменения вы вносили, и исправьте их. Либо восстановите файл из резервной копии.

Если сайт все еще не работает, верните прежнее имя файла «.htaccess» и перейдите к 3 шагу.

Шаг №3. Проверка наличия ошибок в скриптах сайта

Чтобы узнать, есть ли ошибки в скриптах сайта, нужно включить вывод ошибок на сайте. Для этого в менеджере файлов выделите файл «.htaccess» и нажмите кнопку «Открыть».

Вставьте строку «php_value display_errors 1» так, как показано на скриншоте ниже.

Перейдите на сайт. Если появились ошибки, сделайте скриншот экрана или скопируйте текст ошибок. Обратитесь в нашу техническую поддержку с указанием данных ошибок.

Если после выполнения этой инструкции исправить ошибку не получилось, оставьте обращение в нашу техническую поддержку. Поможем выяснить, в чем проблема, и исправить ее.

Понравилась статья? Поделить с друзьями:

Интересное по теме:

  • Bitmos oxy 6000 ошибка error o2
  • Bitlocker ошибка данных crc
  • Bioshock infinite при попытке сохранения профиля произошла ошибка
  • Bioshock infinite exe системная ошибка
  • Bitlocker driver ошибка 24620 windows 10

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии