我在Azure fastCGI上访问blob存储时遇到通用服务器错误。
错误是: 500内部服务器错误。 您正在查找的资源存在问题,无法显示。
以下是代码。此代码在本地测试中运行良好,并且在Azure上上传的所有文件都可以正常工作。
有谁能告诉我如何调试和查看实际错误?
<pre><?php
error_reporting(E_ALL);
header('Content-type: text/html');
echo 'C2, Start';
require_once('Microsoft/WindowsAzure/Storage/Blob.php');
$client = new Microsoft_WindowsAzure_Storage_Blob(
"blob.core.windows.net",
"xxxxxxxxxx",
"yyyyyyyyyyyyyyy=="
);
$filename= getcwd() . '\folders.txt';
echo $filename . '<br>';
if ($client) {
$client->getBlob('setup', 'folders.txt', $filename);
echo 'Blob Load ok! <br>';
} else {
echo 'Blob Storage Error <br>';
}
echo ', END';
?></code>
感谢。
答案 0 :(得分:2)
默认情况下,Windows托管服务器在任何应用程序生成异常时显示一般错误。我们显示一般错误,因为详细的错误消息允许恶意用户获取敏感信息。
要解决此错误,您可以修改 web.config 文件,并指定显示自定义错误消息。自定义错误消息可帮助您找到导致问题的特定代码。
使用下面的示例代码在IIS 7上显示自定义错误消息:
<configuration>
<system.webServer>
<httpErrors errorMode="Detailed" />
<asp scriptErrorSentToBrowser="true"/>
</system.webServer>
<system.web>
<customErrors mode="Off"/>
<compilation debug="true"/>
</system.web>
</configuration>
答案 1 :(得分:0)
这里有多个选项,但作为一个起点......你可以使用PHP try / catch并回显你的错误吗?虽然不是最优雅的方式,但对于这个简单的问题,最有可能是最简单的。
try {
if ($client) {
$client->getBlob('setup', 'folders.txt', $filename); echo 'Blob Load ok!';
}
else {
echo 'Blob Storage Error;
}
echo ', END';
}
catch(Exception $ex) {
echo $ex->getMessage();
}
答案 2 :(得分:0)
您可以尝试设置PHP以显示所有错误,IIS显示处理没有mod的错误管道并显示信息。
您应该使用 display_errors = On
部署php.ini文件Google / Stack在Azure上搜索php.ini,如果您不熟悉如何执行此操作。