【问题标题】:Issue setting up PHP on Virtuoso Server在 Virtuoso Server 上设置 PHP 的问题
【发布时间】:2016-01-21 01:04:52
【问题描述】:

我有一个 Virtuoso 服务器在 Centos7 上运行,并且一直在尝试能够从 HTML 表单执行 PHP 文件(即使是非常基本的只是为了测试),但没有运气。我发现我必须安装 PHP,并且一直在阅读 virtuoso GitHub README.php5 的文档以在 virtuoso 服务器上设置 PHP。这是我第一次设置 PHP,在尝试运行 make 命令时遇到了问题。我在目录/etc/php-5.2.10 中,并且能够运行带有所有标志的configure 命令。我收到的make 命令的错误是:

/bin/sh /etc/php-5.2.10/libtool --silent --preserve-dup-deps --mode=compile
/etc/php-5.2.10/meta_ccld -I/usr/local/iODBC/include -Iext/odbc/ -I/etc/php-5.2.10/ext/odbc/ 
-DPHP_ATOM_INC -I/etc/php-5.2.10/include -I/etc/php-5.2.10/main -I/etc/php-5.2.10 
-I/usr/local/iODBC/include -I/etc/php-5.2.10/ext/date/lib -I/usr/include/libxml2 
-I/etc/php-5.2.10/ext/mbstring/oniguruma -I/etc/php-5.2.10/ext/mbstring/libmbfl 
-I/etc/php-5.2.10/ext/mbstring/libmbfl/mbfl -I/etc/php-5.2.10/TSRM -I/etc/php-5.2.10/Zend  
-D_REENTRANT  -I/usr/include -g -O2 -pthread -DZTS   
-c /etc/php-5.2.10/ext/odbc/php_odbc.c -o ext/odbc/php_odbc.lo
In file included from /etc/php-5.2.10/ext/odbc/php_odbc.c:37:0:
/etc/php-5.2.10/ext/odbc/php_odbc_includes.h:104:22: fatal error: iodbcext.h:
 No such file or directory
 #include <iodbcext.h>
                  ^
compilation terminated.
make: *** [ext/odbc/php_odbc.lo] Error 1

我不知道这些软件包是否相关,但为了获得更多信息,我还安装了以下软件包:

libiodbc.x86_64 3.52.7-7.el7
libiodbc-devel.x86_64 3.52.7-7.el7
php-odbc.x86_64 5.4.16-36.el7_1
unixODBC.x86_64 2.3.1-10.el7
unixODBC-devel.x86_64 2.3.1-10.el7

我已经运行sudo find / -iname '*iodbcext.h*' 来尝试确定该文件的位置,我得到的唯一结果是/usr/include/libiodbc/iodbcext.h。但是,我不确定这是否是 make 正在寻找的内容,或者在使用的 php-5.2.10 目录中是否应该有另一个,如果那是正确的,我会用它做什么?

非常感谢任何有关在 Virtuoso 服务器上设置 PHP 的帮助或建议。

【问题讨论】:

  • 您尝试安装的 PHP 版本是旧版本;它于 2009 年 6 月发布。(它甚至不是 5.2 分支中的最新版本。)你为什么要安装这个旧版本?
  • 我只是想按照我链接的 Readme.php5 文件提供的版本,这是我使用它的唯一原因,因为我对 Virtuoso 也不是很熟悉,所以我不想偏离指示。
  • Virtuoso 的 PHP 功能在“添加了对 PHP 5.3 的初始支持”时已为 largely untouched since 2011。 (PHP 5.3 reached end-of-life over a year ago.) 我觉得这个软件里的 PHP 功能根本没有维护,可能用起来太烂了。
  • Virtuoso 依赖于处理脚本文件的外部 PHP 库,通常来自 Virtuoso 的 DAV 存储库或本地文件系统。任何 PHP 5.x(这是当前的生产版本)都应该可以工作,我们推荐最新的稳定版本。来自@duskwuff 的关于 SO 的猜测往往不像任何人希望的那样准确。因此Virtuoso Users mailing listpublic Support Forumsconfidential Support Case
  • @TallTed 你是在暗示 2011 年添加“对 PHP 5.3 的初始支持”的提交实际上添加了对 PHP 5.3、5.4、5.5 和 5.6 的完全支持,其中后三个甚至没有存在于 2011 年?

标签: php installation server virtuoso iodbc


【解决方案1】:

您为 iODBCunixODBC 驱动程序管理器安装了冲突的软件包。强烈建议您选择其中一个。鉴于您使用的是Virtuoso(来自我的雇主,OpenLink Software),我建议您选择 iODBC(也由OpenLink Software 维护和支持,通常预计会由 Virtuoso 找到)。

PHP 不包含 iODBC SDK (libiodbc-devel.x86_64),这是可以找到头文件 iodbcext.h 的位置。我应该注意,当前 iODBC 的版本是 3.52.10,比您安装的软件包稍晚...

尚不清楚您传递给configure 的哪些选项来获取您正在运行的make 脚本。您也许可以通过在make 脚本中编辑第二次出现的-I/usr/local/iODBC/include,将其更改为-I/usr/include/libiodbc 来解决上面报告的错误……但这只是猜测.

【讨论】:

  • 嗨@TailTed,我刚刚也被告知 Virtuoso 的 VSP 标记。与处理 PHP 相比,这是否是一种将 HTML 表单数据传输到 Virtuoso 服务器的更好方法?到目前为止,我已经找到了 14.3 VSP (docs.openlinksw.com/virtuoso/vsp1.html) 页面,它涵盖了 VSP 的一些基本标记。
  • 另外,我已经将我的配置更改为包含-I/usr/include/libiodbc 以用于第二次出现,我相信这就是我第一次克服任何错误的方式,但随后遇到了make-ing 的问题它。我现在正在尝试使用 php-5.6.15,并删除了 unixODBC 包,现在又得到了configure: error: Cannot find header file(s) for pdo_odbc
  • “更好”总是一个判断。在 OpenLink,我们相信“课程的马”——使用最好的工具来完成你正在做的工作。我几乎不知道你在做什么,说 PHP(你可能已经知道?)或 VSP(很明显你还不知道)或其他一些脚本/标记是否“更好”。我再次鼓励您通过mailing listOpenLink Support forums 向更广泛的懂艺术的人提出您的问题。
  • 关于Cannot find header file(s) for pdo_odbc 我只能猜测,因为您仍然只提供部分信息。最好的猜测是你的configure 命令遗漏了一些东西;我认为你需要像 --with-pdo-odbc=iODBC,/usr/local/iODBC/ 这样的东西,而你可能有 --with-pdo-odbc=iODBC... 但我还在猜测。
猜你喜欢
  • 1970-01-01
  • 2014-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-24
  • 1970-01-01
相关资源
最近更新 更多