1

私のサイトは webfaction でホストされており、php5.4 を実行しています

memcached を起動して実行しようとしていますが、非常に奇妙なエラーが発生しています

ホスティング会社はこれを解決するために私と一緒に一生懸命働いていますが...以下を参照してください

次のコードが機能します

error_reporting(E_ALL & ~E_NOTICE);

$mc = new Memcached();
$mc->addServer('localhost', 32323);
echo "Setting foo to Hello! <Br />";
$mc->set("foo", "Hello!");
echo "Setting bar to Memcached.. <Br />";
$mc->set("bar", "Memcached...");

echo "dumping values <br />";
$arr = array(
$mc->get("foo"),
$mc->get("bar")
);
var_dump($arr);

しかし、以下はそうではありません

error_reporting(E_ALL & ~E_NOTICE);

$mc = new Memcached();
$mc->addServer('localhost', 32323);

$mc->get("cat");

それは実際にこのエラーをスローします

500 – Internal Server Error
The page you requested is currently unavailable. Please try again later.

If you are the website owner, please see Error: 500 Internal Server Error documentation for more information and possible steps to resolve the problem.

ここに私が試した心に留めておくべきことがいくつかあります

  • はい、memcache ではなく memcacheD です

  • これをテストするために隔離された環境を作成しましたが、値を設定する前に値を要求すると、エラーを試行/キャッチすることさえできません (それほど高くは伝播しません)。あたかもPHPレベルに達していないかのように

私のPHPエラーログから私は得る

[Sat Feb 02 19:55:33 2013] [error] [client 209.29.54.55] Premature end of script headers: php54.cgi
4

1 に答える 1

0

他の人が同じ問題に遭遇した場合に備えて、ウェブホスティングから得た回答を次に示します。

さて、問題が何であるかを最終的に正確に特定しました。

php53 -c 。index.php
php53 の前: シンボル検索エラー: ~/php53-exts/memcached.so: 未定義のシンボル: memcached_last_error_errno

具体的には、libmemcached 1.0.15 に対して memcached をビルドしましたが、サーバーには既にバージョン 0.31 の古いバージョンの libmemcached がインストールされています。

libmemcached の新しいバージョンが必要です。memcached 2.1.0 は、古い libmemcached に対してビルドされません。しかし、PHP が実際に 実行されると、~/lib にインストールしたものではなく、共有 libmemcached に対してリンクしようとします。

PHP memcached PECL モジュールを libmemcached に対して静的に再構築することは可能ですが、同じ libmemcached に対しても memcached 自体を構築する必要があります。次に、PHP コードで「new Memcached()」を実行するときに、PHP が適切な ~/bin/memcached を呼び出すようにする必要があります。

これは手間がかかりすぎるため、すべてのサーバーで memcached と libmemcached のバージョンをアップグレードすることを検討しています。新しい memcached + libmemcached を使用すると、libmemcached のローカル インストールとバイナリの静的リンクを必要とせずに、新しいバージョンの memcached PHP PECL モジュールをインストールできます。

于 2013-02-03T15:12:17.847 に答える