php - 如何通过 HTTPS 读取和验证我的 PHP 服务器上是否有图像?
问题描述
我想在我的服务器上检查我的图像,我有另一个子域来保存图像,但它们是通过 HTTPS 提供的
它只能在本地工作,但不能通过 HTTPS 远程工作,因为它总是打印“存在目录”。
$foto = "https://subdomain.example.com/images/" . $var . "/" . $var2. "/flayer";
if (file_exists($foto . ".jpg")) {
echo "HELLO WORL";
}
if (glob($foto . ".*")) {
if (file_exists($foto . ".jpg")) {
$ruta = "https://subdomain.example.com/images/". $var . "/" . $var2 . "/flayer.jpg";
}else{
echo "no exists";
}
}else{
echo "no exists on directory";
}
解决方案
glob()
是一个目录服务。如果它是您域的子目录,那么您的文件系统应该存储在同一台服务器上。在您的索引文件夹中,定义或存储一个变量到此路径 - 将其视为环境变量。
define('PUBLIC_ROOT', dirname(__FILE__));
您现在可以在您的子域中循环浏览您的目录。它将是一个名为您的子域的文件夹。
foreach(glob(PUBLIC_ROOT . '/subdomain/images/*.jpg', GLOB_BRACE) as $image)
// Do something with each JPEG image
如果由于某种原因,您的子域托管在其他地方 - 奇怪 - 或者它是一个外部站点,您需要使用 HTTP。发送cURL
请求。您可以在标题中指定任何人。
$ch = curl_init('https://sub.example.com/images/foo.jpg');
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_exec ($ch);
if(curl_getinfo($ch, CURLINFO_HTTP_CODE) != 200)
// It didn't exist
curl_close($ch);
您不能跨域(通过 HTTP 协议)使用目录服务(DS 协议)。
继续前进:如果您需要该服务器上保存的所有图像的集合,则考虑构建一个 API,该 API 返回子域上所有文件路径或动态 URI 的 JSON 编码数组,然后从另一个域请求它.
推荐阅读
- c++ - 没有“/”怎么做除法?
- sql-server - 如何修复“不存在从对象类型 System.Data.SqlClient.SqlParameter 到已知托管提供程序本机类型的映射。” ASP.Net 中的错误
- c++ - 我正在尝试在 ALLEGRO c++ 中使用许多墙壁进行整理
- sql - Athena:按比例查询耗尽的资源
- algorithm - 绘制手写文本的算法
- c# - 来自不同线程的 C# WPF 动画
- elasticsearch - Elasticsearch 6.4.2 无法启动
- ios - iOS:添加时区而不更改/转换时间值
- json - 将字符串数组从 curl 转换为文件中的分隔新行
- php - 我无法使用 docker 配置环境变量