[英]oci_connect() is working on terminal/centos server but not on browser
从浏览器尝试时出现错误。
警告:oci_connect(): ORA-28759: 在第 16 行的 /var/www/myapp/abc.php 中打开文件失败
致命错误:ORA-28759:无法在第 19 行的 /var/www/myapp/abc.php 中打开文件
But when running same file from Server terminal as a root user > PHP abc.php that time oracle database output is coming.
我不明白为什么从终端运行而不是在浏览器上运行。
我正在使用 PHP7、Apache 并安装了 Oracle 19c 家庭数据库。
我正在使用oci_connect与 PHP 代码中的 oracle 数据库进行通信。
我认为我的 httpd (apahce) 存在一些权限问题。
请给建议。
检查 web 服务器进程是否有权访问所有 Oracle 客户端库和数据文件。 由于您使用的是 Oracle 主目录,因此请确保所有目录都设置了“其他”访问权限。 通常用户主目录默认没有这个。
由于应用程序正在运行,因此正在加载一些库,所以权限是否可以? 确保 web 服务器进程环境变量与命令 shell 使用的相同,以确保使用相同的 Oracle 客户端库集。 (您是否还在某处安装了 Instant Client,或另一个 Oracle 主页??)。
“ORA-28759:无法打开文件”的最近常见原因是使用 Oracle 云钱包并且钱包的 sqlnet.ora 路径( DIRECTORY=...
位)无效。 检查路径是否正常,或者 Oracle 网络配置文件位于默认位置(并且可读)。 请注意,使用 Instant Client 19.14,您可以使用单向 TLS,因此并不总是需要钱包,具体取决于您的网络配置。
我怀疑 php.ini 是否存在问题,因为您显然可以调用 OCI8 函数。 php.ini 文件不控制引发错误的 Oracle 客户端库的行为。
更新您的问题,详细了解您如何设置环境以及正在使用哪些 Oracle 配置文件进行连接
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.