PHP Heroku - дополнительный индекс. php файл, вызывающий проблему маршрутизации - PullRequest
0 голосов
/ 08 января 2020

Я только что закончил курс Udemy, и все отлично работает на localhost.

Для развертывания на Heroku я добавил дополнительный индексный файл. php в папку root, потому что Heroku не смог «увидеть» файл index. php в папке publi c. Поэтому я просто добавил include 'public/index.php'; в новый файл index. php. Пока что сайт загружается.

Однако ссылки в навигационной панели больше не работают. В приведенном ниже коде для панели навигации я использовал переменную URL ROOT в своем конфигурационном файле (это работает в localhost), но с тех пор, как я добавил индекс. php, все изменилось, и я получил 500 Internal Ошибка сервера при переходе по ссылкам.

    <div class="collapse navbar-collapse" id="navbarsExampleDefault">
      <!-- home and about page links on left of navbar  -->
      <ul class="navbar-nav mr-auto">
        <li class="nav-item">
          <a class="nav-link" href="<?php echo URLROOT; ?>">Home</a>
        </li>
        <li class="nav-item">
          <a class="nav-link" href="<?php echo URLROOT; ?>/pages/about">About</a>
        </li>
      </ul>

      <!-- register and login links on right of navbar  -->
      <!-- Contains php if to show/hide navbar options  -->
      <ul class="navbar-nav ml-auto">
        <?php if (isset($_SESSION['user_id'])) : ?>
          <li class="nav-item">
            <a class="nav-link" href="#">Welcome, <?php echo $_SESSION['user_name']; ?></a>
          </li>
          <li class="nav-item">
            <a class="nav-link" href="<?php echo URLROOT; ?>/users/logout">Logout</a>
          </li>
        <?php else : ?>
          <li class="nav-item">
            <a class="nav-link" href="<?php echo URLROOT; ?>/users/register">Register</a>
          </li>
          <li class="nav-item">
            <a class="nav-link" href="<?php echo URLROOT; ?>/users/login">Login</a>
          </li>
        <?php endif; ?>
      </ul>
    </div>

Я попытался добавить /app в начало пути к файлу после URL ROOT, так как это папка, в которой все хранится. Но все равно я получаю сообщение об ошибке.

Я также пытался как добавление / app в конец переменной URL ROOT в файле конфигурации, но это полностью нарушает работу.

файл конфигурации ...

<?php
// App root 
define('APPROOT', dirname(dirname(__FILE__)));

// URL Root
define('URLROOT', 'http://localhost/php-share-posts');
//Site name

Как кривая, существует файл htaccess, который может сыграть в этом роль, останавливая чтение пути внутри папки приложения? Это предположение, скорее всего, неверно. Файл HTAccess ...

<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteRule ^$ public/ [L]
  RewriteRule (.*) public/$1 [L]
</IfModule>

Вот макет папки ... Папка root содержит 4 вещи ...

App folder (with main code)
Public folder (with index.php, css etc)
.htaccess file
.index.php (including the public inex.php file)

Что я делаю не так?

Ответы [ 2 ]

1 голос
/ 08 января 2020

Вы не должны использовать для этого переписывание или включение.

Вы можете указать Apache или nginx, чтобы он указывал на папку publi c в вашем Procfile.

Для Apache, web: vendor/bin/heroku-php-apache2 public/ делает свое дело. Подробнее см. https://devcenter.heroku.com/articles/custom-php-settings#setting -the-document- root.

0 голосов
/ 08 января 2020

Проблема была в файле htaccess, который имел перенаправление на полный путь к файлу, который я использовал на этапе разработки. При загрузке в Heroku это нужно было просто направить в папку publi c. Задача решена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...