質問: やりたいこと ------ PHPの拡張であるuuidをインストールしたい 環境 -- OS: mac osX PHP:7.1 詳細 -- howbrewを使ったPHPインストールができなくなっているのに気付き、peclでのインストールに切り替えたのですが **__pecl install uuid __** コマンドでエラー「u**se of undeclared identifier**」が発生しました。 具体的な手順は 1.***pecl channel-update pecl.php.net*** でアップデート 2.***pecl list***でインストールされているPHP拡張の確認(他に必要なmemcached等はインストールできました) 3.コマンド***pecl install uuid***を実行したところ、下記のエラーが発生しました **__ /private/tmp/pear/install/uuid/uuid.c:93:43: error: use of undeclared identifier 'UUID_TYPE_DCE_TIME' REGISTER_LONG_CONSTANT("UUID_TYPE_TIME", UUID_TYPE_DCE_TIME, CONST_PERSISTENT | CONST_CS); ^ /private/tmp/pear/install/uuid/uuid.c:94:42: error: use of undeclared identifier 'UUID_TYPE_DCE_RANDOM' REGISTER_LONG_CONSTANT("UUID_TYPE_DCE", UUID_TYPE_DCE_RANDOM, CONST_PERSISTENT | CONST_CS); ^ /private/tmp/pear/install/uuid/uuid.c:95:43: error: use of undeclared identifier 'UUID_TYPE_DCE_TIME' REGISTER_LONG_CONSTANT("UUID_TYPE_NAME", UUID_TYPE_DCE_TIME, CONST_PERSISTENT | CONST_CS); ^ /private/tmp/pear/install/uuid/uuid.c:96:45: error: use of undeclared identifier 'UUID_TYPE_DCE_RANDOM' REGISTER_LONG_CONSTANT("UUID_TYPE_RANDOM", UUID_TYPE_DCE_RANDOM, CONST_PERSISTENT | CONST_CS); ^ /private/tmp/pear/install/uuid/uuid.c:169:9: error: use of undeclared identifier 'UUID_TYPE_DCE_TIME' case UUID_TYPE_DCE_TIME: ^ /private/tmp/pear/install/uuid/uuid.c:172:9: error: use of undeclared identifier 'UUID_TYPE_DCE_RANDOM' case UUID_TYPE_DCE_RANDOM: ^ /private/tmp/pear/install/uuid/uuid.c:354:14: warning: implicit declaration of function 'uuid_time' is invalid in C99 [-Wimplicit-function-declaration] RETURN_LONG(uuid_time(u, NULL)); ^__** これは何か設定等が必要なのでしょうか? あるいは、その前に howbrew等でインストールする必要があるものがあるのでしょうか?
回答: macOS の場合、pecl のパッケージのほうが対応していないので、pecl からインストールしようとしてもご質問のようなエラーが表示されて失敗します。これはもうずいぶん前からそういう状態だそうです。 本家からソースをダウンロードしてこちらと同様のコード書き換えを行い、自前でコンパイルしてインストールすることは可能です。**(追記:可能ですが使用できない関数があります。)** こちらの質問では composer を使うパッケージがお勧めだというコメントがついていました。 GitHub - ramsey/uuid: A PHP library for generating RFC 4122 version 1, 3, 4, and 5 universally unique identifiers (UUID).