首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Azure,PHP7.4,OCI8 ( 12.2.0.1.0)

Azure,PHP7.4,OCI8 ( 12.2.0.1.0)
EN

Stack Overflow用户
提问于 2021-07-26 17:50:05
回答 1查看 535关注 0票数 3

我们正在尝试将现有的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错误。

我们采取的步骤是:

  • 从禁用OCI8开始,该应用程序加载良好,但无法运行任何数据库调用。数据库调用错误记录在日志中。
  • 编辑D:\home\site\ini\extensions.ini文件以启用OCI8 (我们尝试了多个变体--全路径、32位、64位、扩展名(例如extension=php_oci8 )--所有这些都有相同的结果)。
  • 重新启动应用程序
  • 刷新页面结果是状态代码500,纯白屏幕读取The page cannot be displayed because an internal server error has occurred.
  • 检查D:\home\LogFiles下的所有内容,包括php_errors.log、eventlog.xml和/http/RawLogs。eventlog.xml显示服务器重新启动,之后不会记录任何其他内容。

我们还尝试在Azure App中使用“Application”,并启用Application,但也没有什么令人感兴趣的地方(我们可以在日志中看到HTTP 500响应,但没有任何导致它的细节)。

人们怀疑PHP还没有启动,但我们不确定如何跟踪它,因为似乎什么都没有记录。

最终,这就引出了两个问题:

  • 在Azure App中是否有不同的方式来启用日志,或者我可能丢失了一个日志位置?
  • 在上运行带有OCI8的PHP应用程序有更新的指南吗?上面的指南是5+年的,至少它列出的所有版本似乎都过时了。我怀疑Azure应用服务更新的方式可能也会阻碍我们。

谢谢!

更新2021-08-10

事实证明,这个问题是由于App "Composer“扩展与OCI8不兼容造成的。我将继续更新这篇文章的进展,因为我们已经启用了,因为我认为其他人也会遇到这种情况。

更新2021-08-16

作为最后的更新,我们最终安装了一个旧版本的Composer (1.6.4)。我们没有测试所有其他版本,但如果遇到同样的问题,1.6.4至少可以作为一个坚实的基线。

Azure扩展的回购似乎没有指定一个版本,所以它应该获取最新版本,但似乎只有1.8.5被安装,所以可能会有一个错误的缓存某处。TL;DR:如果遇到问题,请尝试手动安装Composer,而不是使用扩展。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-10 00:38:28

我做了一些搜索,这个似乎是一个非常可靠的和最近的答案:Azure PHP 7 web应用程序有Oracle驱动程序吗?

我认为您可能是对的,PHP没有正确地启动。几个问题:

  1. 您是否为站点配置并切换了PHP错误日志记录,如以下所述:https://azureossd.github.io/2016/09/28/how-to-identifyreview-errors-on-php-applications-in-azure-web-apps-using-log-stream-service/
  2. 如果您在/wwwroot/包含phpinfo.php文件中创建了一个<?php phpinfo();文件,并在问题发生时尝试访问它,那么oci8驱动程序会加载吗?
  3. 如果在问题发生时创建并尝试访问像index.html这样的静态文件,那么可以直接访问它吗?它将确认PHP问题。
  4. 你能用适当的截图检查帖子吗,也许它会帮助你更清楚地知道遗漏了什么,上面引用的链接删除了屏幕截图:https://azureossd.github.io/2016/02/23/access-oracle-databases-from-azure-web-apps-using-oci8-drivers-with-php/ (我按照这里的步骤到T,它对我起作用)

我建了一个实验室,花了我一点功夫,但我确实让它运转起来了。我可以构建一个Oracle服务器并获取一些数据来证明它是有效的:

驱动器输出

我可能会遵循上面的步骤,我相信这是可以解决的。它可能缺少以下几个步骤之一:

  1. 需要应用程序设置PHP_INI_SCAN_DIR
  2. 需要设置适当设置的/site/ini/扩展名文件,我使用了以下代码: extension="D:\Program (x86)\PHP\v7.4\ext\php_oci8_12c.dll“
  3. 需要具有适当设置的ApplicationHost.xdt
  4. 需要下载并上载我上传的Oracle客户端文件夹instantclient_19_11,但您可能也可以上传instantclient_12_X
  5. 完成所有这些操作后重新启动,并确认加载了OCI8驱动程序。我看到了一个类似的白色错误页面,直到我有了所有这些适当的。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68534412

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档