質問: ### 前提・実現したいこと PHPでhashidsが使えません。 ### 発生している問題・エラーメッセージ centos7環境にHashidsを入れたく、インストールしてみました。 composer require hashids/hashids インストールはそのまま出来(バージョンは2.0かな)、あとはPHP側で実行するべく、 require_once *DIR* . "/vendor/autoload.php"; としたのですが、 PHP Fatal error: require_once(): Failed opening required となるので、パスが通っていないのだなと思い、 インストールされたフォルダのパスを通したのですが、同じエラーでした。 どうも開けないようです。。。 composer内のsrc/に展開されたPHPファイルがあったので、 直接ドキュメントルートにアップし、 require_once "Hashids/Hashids.php"; としてみた所、 PHP Fatal error: Interface 'Hashids\\HashidsInterface' not found となります。 ぐぐると、 https://qiita.com/Hiraku/items/4904584767090e5b13a2 のような記事は見つけるのですが、これはPHPとHashidsが互換性の無いバージョンになるのでしょうか。。。 PHPの環境は7.0です。 何か他に試せる事があれば教えてください。
回答: このページを見て試されているようですが。 【PHP】ユニークで短いユーザーID生成にはhashidsが便利! だとしたら、 ``` require_once DIR . "/vendor/autoload.php"; ``` だと、定数DIRが定義されていないというnoticeが表示されるはずですよ(notice非表示に制御してませんか?)。 `__DIR__` とマジカル定数を使わないと駄目です。 マジカル定数の`__DIR__`はファイルパスを表示してくれるものなので、あとは実際のvendor/autoload.phpと参照場所を合わせてください。未定義定数のDIR(予約語でもなんでもありません)とは別物です。 「*FILE*」や「*DIR*」などPHPのマジカル定数を活用しよう ``` require_once __DIR__ . "/vendor/autoload.php"; ``` ※補足 vendor/autoload.phpはcomposerによってインストールされた外部ライブラリを格納するフォルダとそれを実行するためのプログラムなので、本体が実際動くかはともかく、autoload.phpの参照だけなら、PHPのバージョンは全く関係ありません。