PHP-файл перестает работать без внесенных в него изменений

#php #linux #permissions #raspberry-pi #stripe-payments

#php #linux #разрешения #raspberry-pi #stripe-платежи

Вопрос:

Я пытаюсь заставить веб-сайт работать, но не могу понять, как отредактировать серверный PHP-файл без сбоя веб-сайта. Я не получаю много обращений к Google в поисках этой проблемы.

Я пытаюсь создать страницу «stripe checkout», где вы можете заблокировать карту. Я не писал ничего из этого кода, но получил его на github.

https://github.com/stripe-samples/placing-a-hold

index.php файл — это то, что я пытаюсь отредактировать, но именно здесь у меня возникают проблемы:

https://github.com/stripe-samples/placing-a-hold/tree/master/using-webhooks/server/php

Если я загружу ссылку на github и открою php-файл через свой браузер, я получу страницу оформления заказа, как и ожидалось. Однако, если я скопирую и вставлю файл на свой рабочий стол, открою его, сохраню (без изменений), закрою и повторно загружу на сервер, у меня появится белый экран. Если я повторно загружу исходный php-файл, он снова заработает. Я не понимаю, как два идентичных php-файла могут дать мне такой результат. Я думал, что сохранение файла php изменяет разрешения, связанные с файлом? но я сделал chmod 777 для всего каталога, и он все еще не работает.

У меня нет большого опыта программирования. Я проверил ошибку сервера, в которой говорится:

PHP Фатальная ошибка: неперехваченное исключение RuntimeException: неожиданные данные в выходном буфере. Может быть, у вас есть символы перед открытием <?php tag? в /var/www/html/server/php/vendor/slim/slim/Slim/App.php:625
Трассировка стека:
#0 /var/www/html/server/php/vendor/slim/slim/Slim/App.php (333): SlimApp-> завершить (Объект(SlimHttp Response))
#1 /var/www/html/server/php/index.php (112):SlimApp-> run()
#2 {main}n добавлено /var/www/html/server/php/vendor/slim/slim/Slim/App.php в строке 625,

перейдя в App.php файл вокруг строки 625 в нем есть следующее:

 protected function finalize(ResponseInterface $response)
{
    // stop PHP sending a Content-Type automatically
    ini_set('default_mimetype', '');

    $request = $this->container->get('request');
    if ($this->isEmptyResponse($response) amp;amp; !$this->isHeadRequest($request)) {
        return $response->withoutHeader('Content-Type')->withoutHeader('Content-Length');
    }

    // Add Content-Length header if `addContentLengthHeader` setting is set
    if (isset($this->container->get('settings')['addContentLengthHeader']) amp;amp;
        $this->container->get('settings')['addContentLengthHeader'] == true) {
        if (ob_get_length() > 0) {
            throw new RuntimeException("Unexpected data in output buffer. " .
                "Maybe you have characters before an opening <?php tag?");
        }
        $size = $response->getBody()->getSize();
        if ($size !== null amp;amp; !$response->hasHeader('Content-Length')) {
            $response = $response->withHeader('Content-Length', (string) $size);
        }
    }

    // clear the body if this is a HEAD request
    if ($this->isHeadRequest($request)) {
        return $response->withBody(new Body(fopen('php://temp', 'r ')));
    }

    return $response;
}
  

Комментарии:

1. Просто предположение. Возможно, используемый вами редактор добавляет что-то свое. Какой из них вы используете? Возможно, попробуйте использовать другой.

2. Спасибо, что в итоге возникла проблема. Я открывал PHP-файл в блокноте. По какой-то причине это приводило к его повреждению. Я скачал Atom и открыл его через это, и в итоге он заработал.