【问题标题】:Can't load CSS and images if localhost folder is located on another disk如果 localhost 文件夹位于另一个磁盘上,则无法加载 CSS 和图像
【发布时间】:2019-01-21 12:26:26
【问题描述】:

首先,请不要通过链接php read images outside localhost on another disk 将我的问题标记为问题的重复,因为在阅读我的问题到最后你会注意到我的静态文件路径在我的index.php 文件中应该是动态的

我在 Windows 上使用最简单的 PHP 服务器,通过带有 CMD 命令的 .VBS 文件启动它

php -S localhost:80

我的 .VBS 文件和index.php 位于硬盘 C 内的文件夹中,应该位于那里。因此,当我启动服务器时,它使用磁盘 C 上的文件夹作为根 localhost 文件夹。但是静态文件现在并且应该位于硬盘 D 上。

我可以使用 index.php 中的以下 PHP 代码将静态 HTML 文件成功加载到浏览器

<?php
$path = $_SERVER['REQUEST_URI'];
if($path == '/') {
    $path = 'index';
}
$pathToStaticWebsite = 'D:/static_websites/website1/';
$page = file_get_contents($pathToStaticWebsite.$path.'.html');
echo $page;
?>

但是 HTML 文件具有 CSS 和图像的相对路径,例如 src="images/...",并且它们没有被加载。我已经尝试添加该行

$page = str_replace('images/','file:///'.$pathToStaticWebsite.'images/',$page);

echoindex.php 中的页面之前,但它不起作用,正如我所见,因为服务器不处理此类本地路径

如何解决问题?

ps。我的意思是不使用.htaccessindex.phpwebsite1 文件夹内的路径并记住index.php 作为主应用程序文件可能会将我们从website1 切换到website2,所以静态网站的路径文件夹在index.php中是动态的

【问题讨论】:

  • 处理这个问题的真正方法是在你的机器上本地设置一个实际的网络服务器。最终,当您进行部署时,您必须拥有正确的网站路径。

标签: php localhost


【解决方案1】:

要拥有像您描述的系统,您必须设置网络服务器 - php -S 旨在帮助应用程序开发(所有文件都存储在给定文件夹中)

也无法从 http(http:// 和 file://)请求本地文件

【讨论】:

  • 谢谢。但是在 index.php 中路径应该是动态的,这样用户就可以在不重新启动服务器的情况下切换到另一个网站。 $_SERVER['REQUEST_URI']如果用于加载CSS和图像,也许有解决方案?
  • -> 当然可以为服务器编写一个自定义路由器 (php.net/manual/en/features.commandline.webserver.php) 但在这一点上,我认为让 nginx 或 apache 与不同的 vhost 一起运行会更容易跨度>
【解决方案2】:

我从你的问题中了解到 希望对您有所帮助 我用它来定位项目目录并获取系统 DIRECTORY_SEPARATOR 因为在 Windows 操作系统中 DIRECTORY_SEPARATOR 是 \ 而在 Mac OS 和 UNIX OS 中 DIRECTORY_SEPARATOR 是 /

<?php
define('DS', DIRECTORY_SEPARATOR);
define('ROOT', dirname(__FILE__));
?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-06
    • 2019-05-10
    • 1970-01-01
    • 2019-03-06
    • 1970-01-01
    • 2020-10-15
    • 1970-01-01
    相关资源
    最近更新 更多