【问题标题】:php failed to open stream - no such file or directoryphp 无法打开流 - 没有这样的文件或目录
【发布时间】:2011-03-10 00:46:13
【问题描述】:

我有以下 php 代码:

<html><body>

    <?php include('scores.php?filename=scores/score.sco&scoresize=10&action=VIEW&viewtype=HTML'); ?>
</body>
</html>

您可以在此处查看结果: http://apps.facebook.com/krajecr/pokus2.php

如您所见,它告诉我,它不存在。但如果我只使用链接: http://apps.facebook.com/krajecr/scores.php?filename=scores/score.sco&scoresize=10&action=VIEW&viewtype=HTML 它工作正常,我看到了我想看到的东西。请问哪里有问题?

【问题讨论】:

  • 如果它想让你获得任何权限,或者因为你没有登录而不会让你看到它,请告诉我,我会试着用它做点什么
  • 经常会遇到这个错误,要快速解决它,请按照以下步骤操作:stackoverflow.com/a/36577021/2873507

标签: php html stream


【解决方案1】:

正如错误所说,“scores.php?filename=scores/score.sco&scoresize=10&action=VIEW&viewtype=HTML”不是文件或目录。仅仅因为您可以在 Web 浏览器中输入查询字符串参数(“?”和之后)并不意味着这些是文件名的一部分。文件名为scores.php

您似乎想通过网络服务器发出请求,而不仅仅是打开本地文件。幸运的是,includeallows 也是原生的。但是,您必须指定它:

<html>
  <body>
    <?php include('http://someserver.com/scores.php?filename=scores/score.sco&scoresize=10&action=VIEW&viewtype=HTML'); ?>
  </body>
</html>

或者(最好是保存 HTTP 请求),如果 scores.php 位于同一网络服务器上,您可以将其作为普通文件访问,但事先设置 $_GET 参数,因为这些参数将通过 @987654328 继续存在@指令:

<html>
  <body>
    <?php
    $_GET = Array('filename' => 'scores/score.sco'); // add the others here too
    include('scores.php');
    ?>
  </body>
</html>

希望对您有所帮助。

【讨论】:

  • 感谢您的代码。其他人可能试图说同样的话,但我对 php 有点陌生,所以我不知道他们的意思。但是我不能通过网络服务器来做,因为看起来我的服务器不允许它。当我使用第二个代码时,我得到以下结果:警告:fclose():提供的参数不是第 9 行 /3w/webz.cz/p/programming/facebook/scores.php 中的有效流资源,您可以找到它这里apps.facebook.com/krajecr/pokus.php 它实际上与最初的问题有什么关系吗?谢谢
  • @Tom83B:包含成功,并且正在包含 score.php。但是,如消息所述,您在 score.php 中调用 fclose 时出错。那将是一个新问题。
  • 嗯,是 fclose 的问题,但是如果包含成功,我会看到表格,因为这是我使用直接链接时看到的...
  • @Tom83B:这是一个新问题。包含确实成功,因为错误消息表明它正在处理scores.php,并且是关于fclose,它不在这个问题的代码中。
  • 好吧,除了相信你,我没有太多其他的可能:-)
【解决方案2】:

问题是您已将其指定为通过文件系统进行的访问,而实际上您需要通过 Web 服务器对其进行访问。输入完整的网址。

更好的是,将要包含的脚本转换为函数,然后包含并调用它。

【讨论】:

    【解决方案3】:

    据我所知,您不能使用带参数的包含,它必须是文件名。您可以设置 $_GET['var'] = 'value';在您调用之前包含一个可行的方法。

    【讨论】:

      【解决方案4】:

      您不能使用 get 值进行包含。

      您可以使用

      设置所有您的获取值

      $_GET[..] = ...

      然后做

      包括('scores.php')

      【讨论】:

        猜你喜欢
        • 2015-11-13
        • 2016-08-03
        • 1970-01-01
        • 2020-08-11
        • 2011-05-27
        相关资源
        最近更新 更多