【问题标题】:Anchor and Img tags not finding PHP files or imagesAnchor 和 Img 标签找不到 PHP 文件或图像
【发布时间】:2021-04-15 20:03:15
【问题描述】:

我想通常似乎对其他人有用(以及我想做的)是:

<img src="/images/logo.png"><img src="images/logo.png">

这两个选项都在本地工作(在 GCP App Engine 上)。

当我在shell中使用命令gcloud app deploy时,我的理解是它部署了网站。代码不再工作,找不到图像,也没有报告错误(只是图像应该在的小蓝框)。

我尝试了很多变体,尝试将文件移动到不同的文件夹中,并阅读了这两个页面:

Differences in declaring your root directory in HTML

Pick images of root folder from sub-folder

我的文件结构可以描述为:

HelloWorld
    images
        logo.png
    test
        tester.php
    trythis.php
    index.php

HelloWorldtestimages 是文件夹。

我实际上使用 GCP 存储来托管和存储我的图像,我遇到的问题是超链接、锚标记以及从 index.php 到 test.php 的链接。链接找不到文件,所以也是同样的问题。

编辑:完整代码

<html>
    <head>
        <title>PHP Test</title>
    </head>
    <body>
        <?php echo '<p>Hello World</p>'; ?> 
        <a href="https://www.google.co.uk">Click here</a>
        <a href="test/tester.php">Click here</a>
        <a href="/test/tester.php">Click here</a>
        <a href="trythis.php">Click here</a>
        <a href="/trythis.php">Click here</a>
        <br>
        <img src="images/logo.png">
        <img src="/images/logo.png">
    </body>
</html>

还有我的 app.yaml:

runtime: php72

所有都在本地工作,在服务器上都不工作。

【问题讨论】:

  • 能否也包含您的 app.yaml?
  • @JohnMichaelG 现已包含 :)

标签: html google-app-engine google-cloud-platform anchor php-7.2


【解决方案1】:

您需要设置包含目录文件夹和图像类型的 app.yaml,以便 App Engine 提供文件。尝试使用此 app.yaml 进行部署:

runtime: php72
handlers:
# Serve a directory as a static resource.
- url: /images
  static_dir: images
- url: /test
  static_dir: test

# Serve images as static resources.
- url: /(.+\.(gif|png|jpg))$
  static_files: \1
  upload: .+\.(gif|png|jpg)$

以井号 (#) 字符开头的行将被忽略,或者这是注释。要了解有关 app.yaml 的更多信息,请访问此link

对于 PHP 文件,要处理所有请求路由,您需要添加一个前端控制器。您可以在index.php 链接下面的示例中指定它,或者为前端控制器创建一个新文件,但请确保您将在app.yaml 中添加此行entrypoint: serve path/to/my/front/controller.php

index.php:

<?php
switch (@parse_url($_SERVER['REQUEST_URI'])['path']) {
    case '/':
        require 'index.php';
        break;
    case 'trythis.php':
        require 'trythis.php';
        break;
    case 'test/tester.php':
        require 'tester.php';
        break;
    default:
        http_response_code(404);
        exit('Not Found');
}
?>
<html>
    <head>
        <title>PHP Test</title>
    </head>
    <body>
        <?php echo '<p>Hello World</p>'; ?> 
        <a href="https://www.google.co.uk">Click here</a>
        <a href="test/tester.php">Click here</a>
        <a href="trythis.php">Click here</a>
        <br>
        <img src="images/logo.png">
    </body>
</html>

【讨论】:

  • 感谢您的回复!我使用您的链接添加了“处理程序”行,然后允许我进行部署。否则,这对于图像来说是一个很好的答案,但我无法让它适用于 php 文件 - 它下载文件而不是显示它。我还为 php 文件添加了这个 - url: /test static_dir: test
  • 也尝试添加# Serve your app through a front controller at index.php or public/index.php. - url: .* script: auto,但再次失败
  • 答案已更新。 url:* script: auto 是默认值。更新的答案无效吗?还有你想用 php 文件做什么?
  • 更新的答案无效。我只想将它用作锚标记中的 href。目前我有这个工作:&lt;a href="https://www.google.co.uk"&gt;Google&lt;/a&gt; 但是当将 href 更改为 php 文件时,它会下载文件而不是显示它
  • 谢谢@Annie。我忘了告诉你,你需要创建一个前端控制器来处理你的应用程序的请求,请访问link 查看示例。如果您有任何澄清,请随时提问,如果我解决了您的所有问题,请接受我的回答。我稍后会为前端控制器更新我的答案。
【解决方案2】:

为了进入图像文件夹,您必须首先进入 HelloWord 文件夹。请尝试以下操作:

<img src="../images/logo.png" >

【讨论】:

  • 您好,感谢您的评论。不幸的是,这仍然不适合我。
  • 另外,由于img标签在index.php文件中,../不会太高了吧?
  • 你知道如何使用chrome开发者工具吗?右键单击您的网页,然后单击检查。然后查找网络选项卡并单击。然后在浏览器(其他窗口)中刷新网页并检查网络选项卡。找到图像并检查其路径
  • 我在 safari 上,所以检查了 safari 开发工具,我得到的只是警告 - [Warning] [blocked] The page at https://affable-visitor-292313.nw.r.appspot.com/ was not allowed to display insecure content from chrome-extension://__MSG_%40@extension_id__/data/ItalianPlateNo1Expanded-Regular.otf.
  • 抱歉,我一直觉得苹果产品是一场噩梦。下载 chrome 看看你会得到什么
猜你喜欢
  • 2018-06-23
  • 2021-11-30
  • 2011-05-18
  • 1970-01-01
  • 2015-04-25
  • 2023-04-03
  • 1970-01-01
  • 1970-01-01
  • 2014-09-29
相关资源
最近更新 更多