0

我目前正在尝试将功能正常的 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,但没有成功。

有人可以给我一些建议或指出一个好的教程吗?

4

1 回答 1

1

哦,哇,菜鸟的错误!我在正在编译为 dll 的原始项目的 App.config 中有我的 Phalanger 配置信息,但在调用该 dll 的项目的 App.config 中没有。笨蛋,笨蛋,笨蛋!

于 2016-02-19T14:46:01.783 回答