我们正在尝试将现有的PHP7.4应用程序从运行在Windows 2012上的内部服务器提升到Azure Web应用程序。PHP应用程序使用OCI8连接到Oracle数据库。在没有启用OCI8扩展的情况下,所有东西(数据库连接除外)都正常工作。
按照其他堆栈溢出问题中的建议,我们在https://learn.microsoft.com/en-us/archive/blogs/azureossds/access-oracle-databases-from-azure-web-apps-using-oci8-drivers-with-php上遵循了指南,但是每当启用OCI8扩展时,我们就会得到无日志HTTP 500错误。
我们采取的步骤是:
extension=php_oci8 )--所有这些都有相同的结果)。The page cannot be displayed because an internal server error has occurred.。我们还尝试在Azure App中使用“Application”,并启用Application,但也没有什么令人感兴趣的地方(我们可以在日志中看到HTTP 500响应,但没有任何导致它的细节)。
人们怀疑PHP还没有启动,但我们不确定如何跟踪它,因为似乎什么都没有记录。
最终,这就引出了两个问题:
谢谢!
更新2021-08-10
事实证明,这个问题是由于App "Composer“扩展与OCI8不兼容造成的。我将继续更新这篇文章的进展,因为我们已经启用了,因为我认为其他人也会遇到这种情况。
更新2021-08-16
作为最后的更新,我们最终安装了一个旧版本的Composer (1.6.4)。我们没有测试所有其他版本,但如果遇到同样的问题,1.6.4至少可以作为一个坚实的基线。
Azure扩展的回购似乎没有指定一个版本,所以它应该获取最新版本,但似乎只有1.8.5被安装,所以可能会有一个错误的缓存某处。TL;DR:如果遇到问题,请尝试手动安装Composer,而不是使用扩展。
发布于 2021-08-10 00:38:28
我做了一些搜索,这个似乎是一个非常可靠的和最近的答案:Azure PHP 7 web应用程序有Oracle驱动程序吗?。
我认为您可能是对的,PHP没有正确地启动。几个问题:
<?php phpinfo();文件,并在问题发生时尝试访问它,那么oci8驱动程序会加载吗?我建了一个实验室,花了我一点功夫,但我确实让它运转起来了。我可以构建一个Oracle服务器并获取一些数据来证明它是有效的:
我可能会遵循上面的步骤,我相信这是可以解决的。它可能缺少以下几个步骤之一:
https://stackoverflow.com/questions/68534412
复制相似问题