如何在 PHP Slim3 中显示 Uploads 目录中的图像?
How can I display the images from the Uploads directory in PHP Slim3?
我在 PHP 7 中有一个使用 Slim3 微框架的应用程序。
项目结构如下:
我的应用程序 运行 我在 apache 中使用了这个配置:
<VirtualHost *: 80>
ServerName app
DocumentRoot "C: \ xampp \ htdocs \ app \ public"
</VirtualHost>
要访问 public 资产(位于 public 文件夹内),我使用这些路由:
href = "../ assets / images /"
href = "../ assets / scripts /"
href = "../ assets / styles /"
我想访问 * 上传 * 文件时遇到问题。
因为我找不到如何把路径放在 href 属性中。
执行以下测试:
- 复制并粘贴资产中的 .jpg 文件。使用
href =" ../ assets /file.jpg "
访问
- 正在将 .jpg 文件复制并粘贴到 public。使用
href =" ../file.jpg "
访问
- 正在 public 之外复制和粘贴 .jpg 文件。无法通过
href =" ../../file.jpg "
访问
问题是:如何访问上传文件夹中的文件?
注1:有人建议我把Uploads文件夹放在public
里面
注2:在public/index.php里面我有这个代码
$root = dirname(__DIR__);
$settings['root'] = $root;
$settings['temp'] = $settings['root'] . '/temp';
$settings['public'] = $settings['root'] . '/public';
$settings['uploads'] = $settings['root'] . '/uploads';
注意 3:我尝试使用这样的路径 url
<img src="{{ uploads }}/product_1.png">
但是在控制台上出现这个错误:
Not allowed to load local resource
现在您正在使用相对路径 (../file.jpg
)。这是一种棘手的做事方式,通常不是好的做法。相反,考虑定义一个指向 $_SERVER['DOCUMENT_ROOT'].
的变量
define('SITE_ROOT', $_SERVER['DOCUMENT_ROOT']);
echo '<img href="' . SITE_ROOT . '/public/assets">';
首先,每个 public 文件都应该放在您的 public 目录中(apache 应该允许它是 public)其余的目录应该被禁止进行外部浏览。
然后你就不会有任何问题,因为 public 目录允许在你的 apache 配置文件中浏览:
<VirtualHost *: 80>
ServerName app
DocumentRoot "C: \ xampp \ htdocs \ app \ public"
</VirtualHost>
我在 PHP 7 中有一个使用 Slim3 微框架的应用程序。
项目结构如下:
我的应用程序 运行 我在 apache 中使用了这个配置:
<VirtualHost *: 80>
ServerName app
DocumentRoot "C: \ xampp \ htdocs \ app \ public"
</VirtualHost>
要访问 public 资产(位于 public 文件夹内),我使用这些路由:
href = "../ assets / images /"
href = "../ assets / scripts /"
href = "../ assets / styles /"
我想访问 * 上传 * 文件时遇到问题。
因为我找不到如何把路径放在 href 属性中。
执行以下测试:
- 复制并粘贴资产中的 .jpg 文件。使用
href =" ../ assets /file.jpg "
访问
- 正在将 .jpg 文件复制并粘贴到 public。使用
href =" ../file.jpg "
访问
- 正在 public 之外复制和粘贴 .jpg 文件。无法通过
href =" ../../file.jpg "
访问
问题是:如何访问上传文件夹中的文件?
注1:有人建议我把Uploads文件夹放在public
里面注2:在public/index.php里面我有这个代码
$root = dirname(__DIR__);
$settings['root'] = $root;
$settings['temp'] = $settings['root'] . '/temp';
$settings['public'] = $settings['root'] . '/public';
$settings['uploads'] = $settings['root'] . '/uploads';
注意 3:我尝试使用这样的路径 url
<img src="{{ uploads }}/product_1.png">
但是在控制台上出现这个错误:
Not allowed to load local resource
现在您正在使用相对路径 (../file.jpg
)。这是一种棘手的做事方式,通常不是好的做法。相反,考虑定义一个指向 $_SERVER['DOCUMENT_ROOT'].
define('SITE_ROOT', $_SERVER['DOCUMENT_ROOT']);
echo '<img href="' . SITE_ROOT . '/public/assets">';
首先,每个 public 文件都应该放在您的 public 目录中(apache 应该允许它是 public)其余的目录应该被禁止进行外部浏览。
然后你就不会有任何问题,因为 public 目录允许在你的 apache 配置文件中浏览:
<VirtualHost *: 80>
ServerName app
DocumentRoot "C: \ xampp \ htdocs \ app \ public"
</VirtualHost>