首先,请不要通过链接php在另一个磁盘上的localhost外部读取图像将我的问题标记为问题的重复,因为在阅读完我的问题后,您会注意到我的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);
在echo
处理index.php
中的页面之前,但它不起作用,正如我所看到的,因为服务器不处理这种本地路径
如何解决问题?
ps。我的意思是,如果不在website1
文件夹中使用.htaccess
和index.php
的路径,并记住index.php
作为主应用程序文件可能会将我们从website1
切换到website2
,因此静态网站文件夹的路径在index.php
中是动态的
要有一个像您描述的系统,您必须设置一个Web服务器-php -S
旨在帮助应用程序开发(所有文件都存储在给定的文件夹中)
也不可能从http(http://和file://)请求本地文件
根据您的问题我的理解我希望这能帮助你我用它来定位项目目录并获得系统目录_分离器因为在Windows操作系统中DIRECTORY_SEPARATOR是\在Mac操作系统和UNIX操作系统中,DIRECTORY_SEPARATOR是/
<?php
define('DS', DIRECTORY_SEPARATOR);
define('ROOT', dirname(__FILE__));
?>