我目前正在尝试将功能正常的 PHP 项目编译为 .Net dll。我的 Phalanger/PHP 解决方案使用 PDO 和 SQLite。当我到达创建我的 PDO 对象的部分时:
$this->db = new \PDO('sqlite:'.$fileName, null, null, [PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);
我得到一个简单的“找不到驱动程序”异常。
我找不到太多有用的信息,所以我希望那里的人有一些经验。
在我的项目参考资料中,我有:
- PhpNetPDO
- PhpNetPDOSQLite
- PHPNetSQLite
我也有一个 App.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="phpNet" type="PHP.Core.ConfigurationSectionHandler, PhpNetCore, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0a8e8c4c76728c71" />
</configSections>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="Phalanger"/>
</assemblyBinding>
</runtime>
<phpNet>
<classLibrary>
<add assembly="PhpNetSQLite, Version=4.0.0.0, Culture=neutral, PublicKeyToken=2771987119c16a03" section="sqlite"/>
<add assembly="PhpNetPDO, Version=4.0.0.0, Culture=neutral, PublicKeyToken=2771987119c16a03" section="pdo"/>
<add assembly="PhpNetPDOSQLite, Version=4.0.0.0, Culture=neutral, PublicKeyToken=2771987119c16a03" section="pdosqlite"/>
</classLibrary>
</phpNet>
</configuration>
虽然 App.config 似乎完全无关紧要。
在 Web 应用程序中(据我所知),我需要一个 PHP.ini,其中定义了我的 sqlite dsn。Phalanger 是否有等效文件,特别是在构建 dll 时?如何将我的项目指向 SQLite 驱动程序?
我也尝试过创建一个名为 sqlite 的系统 odbc dsn,但没有成功。
有人可以给我一些建议或指出一个好的教程吗?