PHP:-f和浏览器输出之间的区别

时间:2017-08-25 14:39:45

标签: php command-line odbc

我正在尝试运行PHP这段代码来测试与我的数据库的连接:

<?php
$dsn = "database name";       
$username = "user name";              
$password = "";         
$conn = odbc_connect($dsn, $username, $password);

$q = "select version()";
$r = odbc_exec($conn, $q);
echo odbc_result($r, "Version") . "Hi";
?>

当我使用php&#39; s -f选项运行它时,它会给我预期的输出:

  

数据库版本+嗨

但是当我在网络浏览器中打开它时,它只会输出:

  

你好

我的apache错误日志告诉我

  

找不到数据源名称,并且未指定默认驱动程序

但应该是......

所以我的问题是,为什么呢?我怀疑它可能需要对我的odbc驱动程序的权限做一些事情......但我不知道从哪里开始......

编辑:Web服务器的设置过程:

sudo apt-get update
sudo apt-get install apache2
sudo apt-get install libapache2-mod-php7.0
sudo apt-get install unixodbc-dev

我希望那些关于我为Web服务器所做的事情 之后我将apache2.conf(httpd.config)中的用户名更改为我的实际用户,因为我希望它与我当前的useraccount一起运行(注意我没有在&#34; / etc /中更改它)的apache2 / envvars中&#34;

我在Ubuntu 16上运行

1 个答案:

答案 0 :(得分:0)

我现在得到了解决方案: 不知怎的,我声明的环境设置不被apache用户使用。因此,他在查找ODBC.ini文件时遇到问题。为了解决这个问题,我将以下两行添加到我的php连接文件中:

putenv('ODBCINI=/demo_application/Build/odbc.ini');
putenv('ODBCSYSINI=/demo_application/Build/');