通过 PHP ODBC 连接到 OpenLink Virtuoso

Connect to OpenLink Virtuoso via PHP ODBC

当通过 Apache 连接时,我在 Fedora PHP 上使用 php-odbc 和 virtuoso-opensource 默认安装时出现以下错误:

[unixODBC][OpenLink][Virtuoso iODBC Driver]CL033: Connect failed to localhost:1111 = localhost:1111.

测试代码:

<?php
$conn   = odbc_connect('VOS', 'dba', 'dba');
echo odbc_errormsg();
$query  = 'SELECT DISTINCT ?g WHERE {GRAPH ?g {?s ?p ?o.}}';
$result = odbc_exec($conn, 'CALL DB.DBA.SPARQL_EVAL(\'' . $query . '\', NULL, 0)');
?>
<ul>
<?php while (odbc_fetch_row($result)): ?>
    <li><?php echo odbc_result($result, 1) ?></li>
<?php endwhile; ?>
</ul>

ODBC 配置。文件:

#/etc/odbc.ini 

[ODBC Data Sources]
VOS = Virtuoso

[VOS]
Driver = virtuoso-odbc
Description = Virtuoso Open-Source Edition
Address = localhost:1111

#/etc/odbcinst.ini 

[virtuoso-odbc]
Driver      = /usr/lib/virtodbc.so

如有任何建议,我们将不胜感激。

ETA:测试 PHP -> ODBC -> Virtuoso 脚本在命令行中运行良好,问题是 Apache -> PHP -> ODBC -> Virtuoso,我正在检查selinux 等(Fedora 安装)没有阻塞服务器。

已解决,一个 SELinux 问题,我对目前安装的 Fedora 发行版有些陌生。完整的答案是 here,总而言之,以下命令允许 httpd 进行网络连接:

setsebool -P httpd_can_network_connect 1