【问题标题】:PHP Warning: No such file or directory in Unknown on line 0PHP 警告:在第 0 行的未知中没有这样的文件或目录
【发布时间】:2015-05-07 17:52:05
【问题描述】:

我在 linux 中使用托管,并在我的网站中的 Apache2 服务器中配置了子域。我正在使用 laravel 但默认情况下我没有使用 apache2 服务。我正在使用 laravel artisan 命令。

php artisan serve --host 0.0.0.0

它将监听8000端口。所以为了访问我的网站,我使用http://myipaddress:8000来访问它。

我尝试“chmod 755 或 777 公用文件夹”,但仍然没有成功。我在 laravel/public 文件夹中的 .htaccess

.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

【问题讨论】:

  • 当您$ php artisan serve 时出现错误?究竟什么是错误?请逐步描述!
  • 当我用艺人发球时,没有错误,像往常一样 Laravel 在0.0.0.0:8000 上启动。在我访问我的链接myip:8000 之前,错误开始像上面提到的那样生成。 @SetKyarWaLar
  • 试试这个php artisan serve --host=0.0.0.0
  • @mininoz 与 php artisan serve --host 0.0.0.0 没有区别
  • server.php是否存在?

标签: php apache .htaccess laravel


【解决方案1】:

我知道这是一个老问题,但我遇到了同样的问题,我找到了解决方案,方法是在项目的 根目录 中添加一个 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';

【讨论】:

    【解决方案2】:

    我也遇到了同样的问题,问题的真正原因是,在某处,内置服务器 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 并在 serve.php 之前添加 -ffire() 方法的最后一行,如下所示:

    passthru('"'.PHP_BINARY.'"'." -S {$host}:{$port} -t \"{$public}\" -f server.php");

    更多详情请查看stackoverflow post

    【讨论】:

    • 我昨天在 Ubuntu 16.04 上安全更新到 7.0.28 后点击了这个,谢谢 :-)
    • 很高兴它帮助了你,当我遇到这个我想把我的头发拉出来:D
    猜你喜欢
    • 1970-01-01
    • 2018-12-14
    • 2018-08-26
    • 1970-01-01
    • 1970-01-01
    • 2022-11-10
    • 1970-01-01
    • 1970-01-01
    • 2021-01-09
    相关资源
    最近更新 更多