我有:
- Windows Server 2012 R2
- wampserver 3.0.6 64bit
- yii2
- 启用了php_oci8_12c,
- 启用了php_pdo_oci,
- oracle instantclient-basiclite-windows.x64-12.1.0.2.0
- 系统根据
定义的路径
- 将mod_fcgid 2.3.9添加到Apache
- 添加oci8 2.0.12用于PHP 5.6的线程安全x64(替换旧的php_oci8_12c.dll)
我在phpinfo中看到了针对Oracle的PDO。
我有一个db_o.php配置文件:
return [
'class' => 'yii\db\Connection',
'dsn' => 'oci:dbname=//SOME_IP_ADDRESS:PORT/YOUR_SID;charset=UTF8',
'username' => '',
'password' => '',
];
基于this oracle article我设法设置了所有内容,基本上它可以正常工作(有限制),但需要进行更改:
- 它不一定是NTS,我到处都使用过TS组件
- 因为wampserver使用phpForApache.ini,而Fcgid配置需要php.ini,我不得不复制phpForApache.ini并将其重命名为php.ini。
- 而不是
<Directory "c:/Apache24/htdocs">
当然我必须将 + ExecCGI 添加到<Directory "${INSTALL_DIR}/www/">
我在生成模型时现在使用gii表名,但是:
- 如果我需要关系,则需要2分钟以上,因此wampserver正在停止。我不知道为什么,但我认为这是因为数据库和关系太复杂了(许多复合键等)。我在max_execution_time之前得到内部服务器错误(我必须在两个php ini文件中更改它)。我在apache错误日志中发现它是由mod_fcgid(从管道读取超时)引起的,所以我将FcgidIOTimeout和FcgidBusyTimeout也改为300(秒),将memory_limit改为512M,因为它还不够。为什么它需要这么多资源我不知道,因为最终它只产生了3个关系。 :]
所以它现在有效。没有问题。非常感谢!