PHP Azure 上的 mkdir

PHP mkdir on Azure

我将我的 PHP 代码从 Redhat 移到了 Azure Web App,但无法让以下代码工作:

$foldername = "repository/" . $newdir;
mkdir($foldername);

有什么想法吗?

首先,您可以检查您的应用程序中是否已经存在文件夹"repository"。

如果不行,可以尝试递归制作文件夹:

mkdir("repository/nwedir", 0755, true); 

如有任何疑问,请随时告诉我。

快速回答

如果您需要快速存储某些内容,您可能需要包含当前目录以确保该目录是在与调用它的文件相同的位置创建的。还要确保将标志设置为 true 以递归写入。

$foldername = realpath(__DIR__ . DIRECTORY_SEPARATOR . 'repository') 
            . DIRECTORY_SEPARATOR . $newdir;
if (false === mkdir($foldername, 0775, true)) {
    throw new \RuntimeException('Cannot create directory ' . $foldername . '!');
}

更好的答案

对于 Microsoft Azure(或任何其他云提供商),不再有单一的 "LAMP" 堆栈。这意味着您的 Web 应用程序(PHP 代码)运行s 在平台实例(Web App)上,您的数据库 运行s 在分布式集群(ClearDB)上并且您的文件保存在可扩展的和冗余存储(Azure Blob 存储)。这遵循 S.O.L.I.D. principles 并允许您的应用程序轻松扩展而不受限制。

您 运行 您的 PHP 代码没有那么多 space 来存储和保留文件的实例。更好的方法是尽快将文件卸载到提供冗余备份并且可以 scale/grow 满足您的应用程序要求的共享存储平台。这也意味着通过中央存储,多个实例现在可以安全地共享您上传的文件,甚至为您在 Web 应用程序中使用的静态文件提供 CDN。

我已经创建了一个 PoC 来浏览 Azure 存储容器,您可以从 https://github.com/azureblob/azureblob to see how you can use the Azure SDK for PHP 中自行检查以在您的 Web 应用程序和 blob 存储之间进行交互。

如果您在为上传的文件设置 blob 存储方面有更多问题(或任何其他与 Azure 相关的问题),请随时与我联系。