web-dev-qa-db-ja.com

config.m4が見つかりません。 peclを使用してapdのインストールでphpizeを実行している間

PHPでrename_functionにアクセスしようとしていますが、そのためにはPECLAPDが必要です。 Ubuntu 14.04LTSを実行しています。

Sudo pecl install apdを実行しようとしていますが、次のようになります。

 apd-1.0.1.tgzをダウンロードしています... 
 apd-1.0.1.tgz(36,643バイト)のダウンロードを開始しています
........。完了:36,643バイト
 15ソースファイル、ビルド
実行中:phpize 
 config.m4が見つかりません。
必ず '/ usr/bin/phpizeを実行してください'
モジュールの最上位のソースディレクトリ
 
でコマンドが失敗した場合は、php5-devパッケージをインストールする必要があります。ルートユーザーとして「apt-getinstallphp5-dev」を実行することでそれを行うことができますエラー:「phpize」は失敗しました

このコマンドを特定のディレクトリから実行する必要がありますか?

今回は、ログに手掛かりがある場合に備えて、詳細オプションをオンにして試してみました。

 Sudo/usr/bin/pecl -vvvvv install apd 
警告:file_exists():ラッパー「チャネル」が見つかりません-PHPを構成したときに有効にするのを忘れましたか? PEAR/Downloader/Package.phpの1518行目
 
警告:ラッパー「チャネル」が見つかりません-PHPの設定時にラッパーを有効にするのを忘れていませんか? PEAR/Downloader /Package.phpの1528行目
 
警告:is_file():ラッパー「チャネル」が見つかりません-PHPを構成したときに有効にするのを忘れましたか? PEAR/Downloader/Package.phpの1528行目
 Downloading "http://pecl.php.net/get/apd-1.0.1.tgz"
downloading apd-1.0.1。 tgz ... 
 apd-1.0.1.tgz(36,643バイト)のダウンロードを開始しています
 ..........完了:36,643バイト
 + cp/tmp/pear/temp/tmpNUpEpz/apd-1.0.1/LICENSE /usr/share/php/doc/apd/.tmpLICENSE
トランザクションに追加:chmod 664/usr/share/php/doc/apd/.tmpLICENSE 
トランザクションへの追加:名前の変更/usr/share/php/doc/apd/.tmpLICENSE/usr/share/php/doc/apd/LICENSE 
トランザクションへの追加:installed_as LICENSE/usr/share/php/doc/apd/LICENSE/usr/share/php/doc /apd
+ cp /tmp/pear/temp/tmpNUpEpz/apd-1.0.1/README/usr/share/php/doc/apd/.tmpREADME 
トランザクションへの追加:chmod 664 /usr/share/php/doc/apd/.tmpREADME 
トランザクションへの追加:名前を/ usr/share/php/doc/apdに変更/.tmpREADME/usr/share/php/doc/apd/README 
トランザクションへの追加:installed_as README/usr/share/php/doc/apd/README/usr/share/php/doc/apd 
 + cp/tmp/pear/temp/tmpNUpEpz/apd-1.0.1/pprofp /usr/bin/.tmppprofp
+ chmod + x /usr/bin/.tmppprofp
トランザクションへの追加:chmod 775/usr/bin/.tmppprofp 
トランザクションへの追加:名前の変更/usr/bin/.tmppprofp/usr/bin/pprofp 
トランザクションへの追加:installed_as pprofp/usr/bin/pprofp/usr/bin/
 + cp /tmp/pear/temp/tmpNUpEpz/apd-1.0.1/pprof2calltree/usr/bin/.tmppprof2calltree
+chmod + x /usr/bin/.tmppprof2calltree
トランザクションへの追加:chmod 775 /usr/bin/.tmppprof2calltree 
トランザクションへの追加:rename /usr/bin/.tmppprof2calltree /usr/bin/pprof2calltree
トランザクションへの追加:installed_as pprof2calltree/usr/bin/pprof2calltree/usr/bin /
15ソースファイル、ビルド
/tmp/pear/temp/pearf7LGcaにビルド
実行中:phpize 
設定が見つかりません。 m4。
モジュールの最上位ソースディレクトリで「/ usr/bin/phpize」を実行していることを確認してください
 
コマンドが「phpize:not found」で失敗した場合その後、あなたはインする必要があります背の高いphp5-devパッケージルートユーザーとして「apt-getinstallphp5-dev」を実行すると、12個のファイル操作をロールバックできます
 + rm /usr/share/php/doc/apd/.tmpLICENSE
 + rm /usr/share/php/doc/apd/.tmpREADME
+ rm /usr/bin/.tmppprofp
+ rm /usr/bin/.tmppprof2calltree
エラー: `phpize'failed 
 
警告:unlink(/ tmp/glibctestRdKE0K):System.phpの214行目にそのようなファイルまたはディレクトリがありません
 
警告: unlink(/ tmp/pear/temp/pearf7LGca):System.phpの214行目にそのようなファイルまたはディレクトリはありません
13
Anthony

これは、APDをPHPプロファイラーとして実行するための前提条件であるすべての簡単な要約になります。それがあなたのニーズに役立つことを願っています。この要約はPHP 5.6.2 APD 1.0.1に適用され、他のバージョンでは正しくない可能性があります。

最初に、これら2つを確認しなかった場合は起動しないでください。

  • Zendプラットフォームまたはその他のPHPオプティマイザーを非アクティブ化します。一般に、すべてのZend拡張機能を無効にする必要があります。
  • PHP(--enable-debug)のデバッグ対応バージョンをインストールします

PEAR設定が機能している場合は、 this の記事のようにAPDを設定する必要があります。配布パッケージも試すことを忘れないでください。それ以外の場合、APDのビルドは次のようになります。

  • Tarballを抽出します。
  • Tarballのディレクトリを変更します。
  • <Apache root>/bin/phpsizeを実行します
  • ./configureを実行します(構成が失敗した場合は--with-php-config=<Apache root>/bin/php-configを追加します)。
  • を使用してすべてをコンパイルしてインストールします。
     make 
     make install 
    
  • Php.iniを編集し、少なくともを追加します
     zend_extension =/apd.so 
     apd.statement = 1 
     apd.tracedir =/tmp/apd-traces 
    
  • Php.iniで指定された出力ディレクトリを作成します

ここで、Apacheを再起動する必要がありますが、再起動する前に、APD拡張機能が正常に機能することを確認してください。単にPHPを実行するには

/bin/php 

拡張機能が適切に読み込まれていても警告は表示されません。 「apd.so」拡張子のようなエラーメッセージが表示された場合は、ロードできませんでした。問題があります。正しいApache/PHPバージョンに対してコンパイルし、今すぐ同じものを使用しているかどうかを確認してください。

PHPが何も文句を言わない場合は、次のように入力します。

<?php phpinfo(); ?>

aPDに関するいくつかの行を確認してください。あなたがそれらを見つけたら、あなたは終わりです。

また、いくつかのトレースが必要になるため、トレースを開始するには、Apacheを使用して、PHPモジュールがAPDをロードできるようにする必要があります。次に、トレースするスクリプトを特定する必要があります。スクリプトの先頭にAPD呼び出しを追加します。

apd_set_pprof_trace();

次に、いくつかの要求を行い、ステートメントを再度削除して、さらに害を与えないようにします。次に、トレースディレクトリを確認します。 pprof[0-9]*.[0-9]の命名スキームを持つファイルはここにあります。 APDソースtarballからpprofpツールを使用してそれらをデコードします。例:

/bin/php/pprofp -u 

必要に応じてstdoutをリダイレクトします。 要約出力)の代わりに-tを使用して、呼び出しツリーを取得します。 -tを使用してトレースを作成すると、要約出力も取得されますが、呼び出しごとの期間は含まれていません。常に呼び出しツリーと要約トレースの両方を作成することをお勧めします。

お役に立てば幸いです、お勧めしますほとんど上記のリンクを読む

編集:

Phpizeコマンドは、拡張ソースディレクトリの最上位で実行するためのものです(このソースディレクトリには、config.m4というファイル名が含まれている必要があります)。詳細については、---(this を参照してください。

17
balintpekker

エラーごとに:

コマンドがphpize: not foundで失敗した場合は、php5-devパッケージをインストールする必要があります。

Rootユーザーとしてapt-get install php5-devを実行することでそれを行うことができます

PHPのモジュール開発をインストールする必要があります:

Sudo apt-get install php5-dev

これにより、Pecl拡張ソースをコンパイルするために必要なphpizeバイナリが提供されます。そして、それがPATHにあることを確認してください。

0
kenorb