Я использую хостинг в linux и настроенный субдомен на моем сайте на сервере Apache2. Я использую laravel, но по умолчанию я не использовал службу apache2. Я использую команды laravel artisan.
php artisan serve –host 0.0.0.0
Он будет слушать порт 8000. Поэтому, чтобы получить доступ к моему сайту, я использую http: // myipaddress: 8000 для доступа к нему.
Я попытался «chmod 755 или 777 общедоступной папки», но все еще не работал. Мой .htaccess в laravel / общедоступной папке
.htaccess
<IfModule mod_rewrite.c> <IfModule mod_negotiation.c> Options -MultiViews </IfModule> RewriteEngine On # Redirect Trailing Slashes... RewriteRule ^(.*)/$ /$1 [L,R=301] # Handle Front Controller... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L]
Когда я обращаюсь к своему сайту с портом 8000, ниже приведены мои ошибки:
PHP Warning: Unknown: failed to open stream: No such file or directory in Unknown on line 0 PHP Fatal error: Unknown: Failed opening required 'server.php' (include_path='.:/usr/share/php:/usr/share/php/PEAR') in Unknown on line 0
Я знаю, что это старый вопрос, но у меня была такая же проблема, и я нашел решение, добавив файл server.php
в корневую директорию проекта со следующим содержимым:
<?php $uri = urldecode( parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH) ); // This file allows us to emulate Apache's "mod_rewrite" functionality from the // built-in PHP web server. This provides a convenient way to test a Laravel // application without having installed a "real" web server software here. if ($uri !== '/' && file_exists(__DIR__.'/public'.$uri)) { return false; } require_once __DIR__.'/public/index.php';
У меня была та же проблема, реальная причина проблемы в том, что где-то вдоль линии последний параметр для встроенного сервера php -S
был изменен на флаг, поэтому вы должны называть его следующим образом:
php -S 127.0.0.1:8000 -t public -f serve.php
Перед php 7.0.26 вы можете опустить -f
.
Это то, что происходит под капотом, когда вы вызываете php artisan serve
.
Если вы хотите обслуживать его с помощью php artisan serve
вам придется переопределить ServeCommand
и добавить -f
перед serve.php
на последней строке метода fire()
, например:
passthru('"'.PHP_BINARY.'"'." -S {$host}:{$port} -t \"{$public}\" -f server.php");
Для более подробной информации смотрите этот пост stackoverflow .