0

我有下一个问题。我将 Fedora 17 作为主机运行,将 CentOS 6.3 作为访客运行。我已经apache-cassandra11-1.1.7-1.noarch在 CentOS 机器上成功安装了 Cassandra。现在我需要在 Fedora 17 上使用 Thrift 安装 PDO 模块,这样我就可以通过我的 PHP 应用程序访问 CentOS 机器上的 Cassandra。

这是我第一次使用 Cassandra 进行“实验”,我在这里找到了关于 Google Code 的 PDO 文档。我已经安装了所有的 repos,比如 boost-devel、php-devel、pcre-devel。问题是当我在这里访问 DataStax 时,只有 Python 2.6 版本的节俭,并且我安装了 Python 2.7。我什至放入了成功的 yum --skip-broken ,我可以在这里看到节俭:

  • /usr/src/debug/thrift-0.7.0
  • /usr/lib/debug/usr/lib64/python2.6/site-packages/thrift

/usr/bin/*这与 PDO 文档网站 ( )上所写的不太一样

现在的问题是:是否甚至需要安装 python-2.6,如果这意味着我必须自己重建节俭,那么 PDO 是什么,我是否也必须重建它?

如果有人已经这样做了,请提供一些您如何解决此问题的步骤。

先感谢您。

编辑1:

为了安装thrift,我使用了这个:

tar -xzvf thrift-0.7.0.tar.gz
sudo mv thrift-0.7.0 /opt/thrift-0.7.0
chown brian /opt/thrift-0.7.0
cd /opt/thrift-0.7.0/
./configure
make
sudo make install

运行 thrift 命令输出选项列表,说明安装成功。

为了安装 pdo-cassandra,我使用了这个

cd /opt
sudo git clone https://code.google.com/a/apache-extras.org/p/cassandra-pdo/
sudo chown -R brian cassandra-pdo
cd cassandra-pdo/
phpize
./configure
make
make test

运行 make test 后,我​​得到下一个错误:

PHP Warning:  PHP Startup: Unable to load dynamic library '/opt/cassandra-pdo/modules/pdo_cassandra.so' - /opt/cassandra-pdo/modules/pdo_cassandra.so: undefined symbol: php_pdo_unregister_driver in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/opt/cassandra-pdo/modules/pdo_cassandra.so' - /opt/cassandra-pdo/modules/pdo_cassandra.so: undefined symbol: php_pdo_unregister_driver in Unknown on line 0

=====================================================================
PHP         : /usr/bin/php 
Warning: PHP Startup: Unable to load dynamic library '/opt/cassandra-pdo/modules/pdo_cassandra.so' - /opt/cassandra-pdo/modules/pdo_cassandra.so: undefined symbol: php_pdo_unregister_driver in Unknown on line 0

PHP_SAPI    : cli
PHP_VERSION : 5.4.10
ZEND_VERSION: 2.4.0
PHP_OS      : Linux - Linux <user_name> 3.6.11-1.fc17.x86_64 #1 SMP Mon Dec 17 22:16:35 UTC 2012 x86_64
INI actual  : /opt/cassandra-pdo/tmp-php.ini
More .INIs  :  
CWD         : /opt/cassandra-pdo
Extra dirs  : 
VALGRIND    : Not used
....

加载模块可能有什么问题的任何想法,是的,该文件夹中存在模块(/opt/cassandra-pdo/modules/pdo_cassandra.so)。

4

1 回答 1

0

(由 OP 在问题编辑中回答。转换为社区 wiki 答案。请参阅没有答案的问题,但问题在评论中解决(或在聊天中扩展)

OP写道:

行。我已经让它在我的 Fedora 17 主机上运行。你需要做下一件事。您必须将pdo_cassandra.so模块复制到目录。您可以通过 . 检查该目录的位置phpinfo()。您还需要在pdo_cassandra.ini文件所在的目录中创建文件pdo.ini。问题是pdo.so扩展必须在pdo_cassandra.so. 创建ini文件并将我的扩展名复制到正确的文件夹后,我就可以使用它了。

此外,如果您在 CentOS 上运行 cassandra 时遇到问题(在我的情况下,它是 VMWare 中的 CentOS 6.3)并且您会收到下一个错误:

Error opening zip file or JAR manifest missing : /lib/jamm-0.2.5.jar

您需要/etc/cassandra/default.conf/cassandra-env.sh在此位置编辑文件:

...
# enable assertions.  disabling this in production will give a modest
# performance benefit (around 5%).
JVM_OPTS="$JVM_OPTS -ea"

# add the jamm javaagent
if [ "$JVM_VENDOR" != "OpenJDK" -o "$JVM_VERSION" \> "1.6.0" ] \
      || [ "$JVM_VERSION" = "1.6.0" -a "$JVM_PATCH_VERSION" -ge 23 ]
then
    CASSANDRA_HOME="/usr/share/cassandra"
    JVM_OPTS="$JVM_OPTS -javaagent:$CASSANDRA_HOME/lib/jamm-0.2.5.jar"
fi

# enable thread priorities, primarily so we can give periodic tasks
# a lower priority to avoid interfering with client workload
JVM_OPTS="$JVM_OPTS -XX:+UseThreadPriorities"
...

您需要将路径添加到您的 cassandra 实例CASSANDRA_HOME="/usr/share/cassandra",或者您可以将其添加为 export CASSANDRA_HOME=/usr/share/cassandra

希望这可以帮助遇到同样问题的人。

于 2015-01-29T21:10:11.353 回答