锚点和 Img 标签未找到 PHP 个文件或图像

Anchor and Img tags not finding PHP files or images

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

<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 存储来托管和存储我的图像,我遇到的问题是 hyperlinks、锚标记以及来自 [=53= 的 link ] 到 test.php。 link 找不到文件,所以是同样的问题。

编辑:完整代码

<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

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

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

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

您需要设置包含目录文件夹和图像类型的 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: 
  upload: .+\.(gif|png|jpg)$

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

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

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>