Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
未找到ISAM表,SQLExecDirect中的SQL状态为S0000 PHP版本:7.0.14 在Windows Server 2012上工作 数据库文件位于D:驱动器中 网站/应用程序已正确分配到应用程序池 分配的应用程序池具有D:驱动器的权限_Php_Iis_Permissions_Odbc_Windows Server 2012 - Fatal编程技术网

未找到ISAM表,SQLExecDirect中的SQL状态为S0000 PHP版本:7.0.14 在Windows Server 2012上工作 数据库文件位于D:驱动器中 网站/应用程序已正确分配到应用程序池 分配的应用程序池具有D:驱动器的权限

未找到ISAM表,SQLExecDirect中的SQL状态为S0000 PHP版本:7.0.14 在Windows Server 2012上工作 数据库文件位于D:驱动器中 网站/应用程序已正确分配到应用程序池 分配的应用程序池具有D:驱动器的权限,php,iis,permissions,odbc,windows-server-2012,Php,Iis,Permissions,Odbc,Windows Server 2012,正在尝试连接并从ToppSpeed数据库获取信息 使用Topspeed ODBC驱动程序正确创建DSN 我创建了一个示例脚本来验证它是否正常工作 odbctest.php $conn=odbc_connect(“DSN_名称,”)//连接到DSN 如果(!$conn){ 退出(“连接失败:.$conn”); } $sql=“从ExampleTableName中选择*”//查询字符串 $rs=odbc_exec($conn,$sql)//执行查询php-S localhost:8002 并在htt

正在尝试连接并从ToppSpeed数据库获取信息

使用Topspeed ODBC驱动程序正确创建DSN

我创建了一个示例脚本来验证它是否正常工作

odbctest.php

$conn=odbc_connect(“DSN_名称,”)//连接到DSN
如果(!$conn){
退出(“连接失败:.$conn”);
}
$sql=“从ExampleTableName中选择*”//查询字符串
$rs=odbc_exec($conn,$sql)//执行查询php-S localhost:8002
并在
http://localhost:8002/odbctest.php
一切正常

  • 工作:当我在命令行中运行文件时
    >php odbctest.php
    工作正常,我从表中获取了数据

  • 不工作:我已在IIS管理器中添加了网站,将网站(物理路径为
    C:\inetpub\wwwroot\projectFolder
    )与本地IP绑定
    当我在带有本地IP的浏览器中打开
    odbctest.php
    时,我发现
    表未找到错误。

  • 相同的脚本,唯一的区别是它在命令行上运行,而不是在IIS服务器上,它在PHP内置服务器上运行,而不是在IIS上工作

    其他技术差异是

    我放了一个PHP文件来查看两台服务器上的PHP信息。 这是我发现的唯一区别

    • 在PHP内置服务器上工作:在PHP信息中服务器API是:内置HTTP服务器
    • 无法在IIS服务器上工作:在PHP信息中,服务器API为:CGI/FastCGI
    DSN字符串中没有问题,因为当我使用unknown更改DSN字符串时,它标识DSN字符串中有错误

    我认为在尝试从IIS服务器访问数据(PHP在CGI/FastCGI上运行)时可能存在一些权限问题。

    我想知道是否存在权限问题,为什么错误显示找不到表

    我找不到任何关于TopSpeed数据库连接错误的好文档,因为这个数据库没有被广泛使用


    有什么建议或想法吗?请告知。提前感谢。

    数据库SQL错误没有说明任何有关权限的内容,

    所以我创建了一个简单的PHP脚本,将数据附加到文本文件中。

    我在IIS服务器上运行了带有两个测试用例的PHP脚本

    • 测试用例1:写入项目目录中的文本文件(同一服务器) PHP脚本正确执行并将数据写入文本文件

    • 测试用例2:我用文件
      D:\some\u directory\logfile.txt
      (位于D驱动器上)更改文本文件路径 当我再次运行脚本时,我得到以下错误:

    警告:文件内容(D:\some\u directory\logfile.txt): 无法打开流:中的权限被拒绝 第12行的C:\inetpub\wwwroot\project directory\write.php

    它确认权限存在一些问题

    在IIS管理器中分配给网站的应用程序池已具有
    D:Driver.
    的权限,因此这不是问题所在。 在更多的研究中,我发现

    我们需要首先确定需要提供权限的用户,并且该用户是“匿名用户标识”的值

    我看到,匿名用户身份的值不是应用程序池

    我将其更改为应用程序池标识。

    因此,现在网站/应用程序的匿名用户身份成为应用程序池,并且具有正确的权限


    在这些更改之后,由于没有权限问题,所以一切都非常正常

    数据库SQL错误没有说明任何有关权限的内容,

    所以我创建了一个简单的PHP脚本,将数据附加到文本文件中。

    我在IIS服务器上运行了带有两个测试用例的PHP脚本

    • 测试用例1:写入项目目录中的文本文件(同一服务器) PHP脚本正确执行并将数据写入文本文件

    • 测试用例2:我用文件
      D:\some\u directory\logfile.txt
      (位于D驱动器上)更改文本文件路径 当我再次运行脚本时,我得到以下错误:

    警告:文件内容(D:\some\u directory\logfile.txt): 无法打开流:中的权限被拒绝 第12行的C:\inetpub\wwwroot\project directory\write.php

    它确认权限存在一些问题

    在IIS管理器中分配给网站的应用程序池已具有
    D:Driver.
    的权限,因此这不是问题所在。 在更多的研究中,我发现

    我们需要首先确定需要提供权限的用户,并且该用户是“匿名用户标识”的值

    我看到,匿名用户身份的值不是应用程序池

    我将其更改为应用程序池标识。

    因此,现在网站/应用程序的匿名用户身份成为应用程序池,并且具有正确的权限

    在这些更改之后,由于没有权限问题,所以一切都非常正常

           $conn=odbc_connect("DSN_NAME",'',''); //Make a coonection to DSN
    
            if (!$conn){
                exit("Connection Failed: " . $conn);
            }
    
            $sql="SELECT * FROM ExampleTableName"; // Query String
    
            $rs=odbc_exec($conn,$sql);            //Execute Query <--- Error Line
    
            if (!$rs) {
                exit("Error in SQL");
            }
    
            while (odbc_fetch_row($rs)){
                var_dump(odbc_result($rs,1));
            }
    
            odbc_close($conn);