- PHP版本:7.0.14
- 工作在Windows Server 2012
- 数据库文件是在d:驱动器
- 网站/应用程序分配给应用程序池正确
- 分配的应用程序池有权限d:驱动
尝试连接并获取来自ToppSpeed数据库中的信息。ISAM表未找到,SQL状态S0000在SQLExecDirect的
使用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 Warning: odbc_exec(): SQL error: [SoftVelocity Inc.][TopSpeed ODBC Driver][ISAM]ISAM Table Not Found, SQL state S0000 in SQLExecDirect in C:\inetpub\wwwroot\projectFolder\odbctest.php on line 9
工作:当我在使用命令
> php -S localhost:8002
和运行文件PHP内置服务器上运行相同的文件浏览器在http://localhost:8002/odbctest.php
一切工作正常。工作:当我在命令行运行文件
> php odbctest.php
它工作正常我从表中获取数据。不工作:我已经与当地的IP添加在IIS管理器的网站,绑定的网站(物理路径是
浏览器C:\inetpub\wwwroot\projectFolder
)
当我打开odbctest.php
与本地IP我得到Table NOT Found error.
相同的脚本,唯一的区别是它运行在命令行而不是IIS服务器上,它运行在PHP内置服务器上,而不是在IIS上运行。
其他技术不同的是
我已经把一个PHP文件中看到两台服务器上PHP的信息。 这是我发现的唯一区别。
- 致力于PHP内置的服务器:在PHP信息服务器API是:内置的HTTP服务器
- 不工作IIS服务器上:在PHP信息服务器API是:CGI/FastCGI的
DSN字符串中没有问题,因为当我更改未知的DSN字符串时,表明DSN字符串中存在错误。
我想在尝试从IIS服务器访问数据时可能会遇到一些权限问题(PHP在CGI/FastCGI上运行)。
我想知道是否有权限问题,为什么错误说表没有找到!
我没有找到任何有关TopSpeed数据库连接错误的良好文档,因为这个数据库没有被广泛使用。
任何建议或想法?请指教。先谢谢你。