尝试连接并从ToppSpeed数据库获取信息。
使用Topspeed ODBC Driver正确创建DSN。
我创建了一个示例脚本来验证它是否正常工作。
odbctest.php
$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);
错误:
PHP警告:odbc_exec():SQL错误:[SoftVelocity公司] [TopSpeed ODBC驱动程序] [ISAM] ISAM表未找到,SQL状态S0000在SQLExecDirect中的C:\ inetpub \ wwwroot \ projectFolder \ odbctest.php在第9行
> php -S localhost:8002
在PHP内置服务器上运行相同的文件并在http://localhost:8002/odbctest.php
的浏览器中运行文件一切正常。> php odbctest.php
它工作正常我从表中获取数据。C:\inetpub\wwwroot\projectFolder
)与本地IP
当我在具有本地IP的浏览器中打开odbctest.php
时,我得到了Table NOT Found error.
相同的脚本,唯一的区别是它在命令行上而不是在IIS服务器上运行,它在PHP内置服务器上运行而不在IIS上运行。
其他技术差异是
我已经放了一个PHP文件来查看两台服务器上的PHP信息。这是我发现的唯一区别。
DSN字符串中没有问题,因为当我使用unknown更改DSN字符串时,它会识别DSN字符串中存在错误。
我认为在尝试从IIS服务器访问数据时可能存在一些权限问题(PHP在CGI / FastCGI上运行)。
我想知道是否存在权限问题为什么错误表没有找到表!!
我找不到TopSpeed数据库连接错误的任何好文档,因为该数据库没有被广泛使用。
有什么建议或想法吗?请指教。先感谢您。
数据库SQL错误没有说明权限,
所以我创建了一个简单的另一个PHP脚本来将数据附加到TEXT文件。
我在IIS服务器上运行了带有两个测试用例的PHP脚本
D:\some_directory\logfile.txt
更改文本文件路径(驻留在D盘上)当我再次运行它脚本时,我收到以下错误:警告:file_put_contents(D:\ some_directory \ logfile.txt):无法打开流:第12行的C:\ inetpub \ wwwroot \ project-directory \ write.php中的权限被拒绝
它确认了权限存在一些问题
在IIS管理器中分配给网站的应用程序池已获得D: Driver.
的许可所以这不是问题所在。在更多的研究中,我发现了
我们需要首先识别我们需要提供权限的USER,并且用户是“匿名用户身份”的值
https://stackoverflow.com/a/32033941/5236174
我看到匿名用户身份的价值不是应用程序池!!
我将其更改为应用程序池标识。
所以现在网站/应用程序的匿名用户身份成为应用程序池并具有正确的权限。
Aftheset这个变化,一切都很好,因为没有权限问题。