ホームページ >バックエンド開発 >PHPチュートリアル >コンパイルの問題_PHP チュートリアル

コンパイルの問題_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 16:10:59948ブラウズ


この章では、コンパイル中に発生する可能性のある多くのエラー状態をまとめます。 1. 匿名 CVS を使用してソース コード パッケージの最新バージョンを取得しましたが、構成スクリプト ファイルがありませんでした。 2. Apache で動作するように PHP を構成するときに問題が発生しました。 httpd.h が見つからないと表示されましたが、実際には存在していました。 3. conifgure を実行すると、インクルード ファイルまたはライブラリ (GD、gdbm、またはその他のパッケージ) が見つからないと表示されました。 language-parser.tab.c をコンパイルしようとすると、エラーが発生し、「yytname undeclared」というプロンプトが表示されました。make を実行すると、最初はうまくいきましたが、最終的には失敗しました。一部のファイルが見つからないというエラーが発生しました。 6. PHP に接続すると、未定義の参照を示すエラーが大量に発生しました。 7. Apache 1.3 で PHP をコンパイルする方法がわかりません。 8. 手順に従って Apache モジュール (Unix 上) をインストールしましたが、ブラウザで PHP スクリプトを開いたときに、保存するかどうかを尋ねられました。 9. システムは --activate-module=src/modules/php4/libphp4.a を使用するように指示しましたが、ファイルがまったく存在しなかったため、 --activate-module=src/modules/ に変更する必要がありました。 php4/libmodphp4.a は機能しません。どうすればよいですか? 10. PHP を Apache の静的モジュールにコンパイルしたいのですが、 --activate-module=src/modules/php4/libphp4.a を使用します。システムは、私のコンパイラは ANSI 互換ではないと言います。 11. --with-apxs を使用して PHP をコンパイルすると、常に奇妙なエラーが発生します。 12. 作成中に、microtime に関するエラーや RUSAGE_ に関するエラーが大量に発生します。 13. PHP をアップグレードしたいのですが、実行している PHP の設定とインストールに使用した ./configure 行はどこにありますか。 14. GD ライブラリを使用して PHP をコンパイルすると、実行中に奇妙なエラーが発生するか、セグメンテーション違反が発生します。
1. ソース コード パッケージの最新バージョンを取得するために使用しましたが、構成スクリプト ファイルがありません。 !
CVS サーバーの最上位ディレクトリで ./buildconf を実行するだけで、configure スクリプト ファイルを生成できるように、GNU autoconf パッケージをインストールする必要があります。 (注: --enable-maintainer-mode オプションを指定してconfigureを実行しない限り、configure.inファイルが更新されてもconfigureスクリプトは再生成されないため、configure.inが変​​更されたことがわかった時点で、 config または config.status を実行すると、Makefile に @VARIABLE@ のようなラベルが表示されます。)
2. Apache で動作するように PHP を設定するときに問題が発生しました。 httpd.h が見つからないと表示されますが、確かに存在します。
configure/setup スクリプトに Apache の最上位ディレクトリの場所を伝える必要があります。 つまり、 --with-apache=/path/to/apache/src ではなく、 --with-apache=/path/to/apache を指定する必要があります。 conifgure を実行すると、インクルード ファイルが見つからないと表示されます。またはいくつかのライブラリ: GD、gdbm、またはその他のパッケージ
configure スクリプト、これらのヘッダー ファイルまたは非標準ライブラリの場所を確認し、いくつかの特別なフラグを C プリプロセッサに送信できます。例えば: CPPFLAGS=-I/path/to/include LDFLAGS=-L/path/to/library ./configure シェルが csh-variant を使用する場合、次のようになります (なぜですか?)。 env CPPFLAGS=-I/path/to/include LDFLAGS=-L/path/to/library ./configure
4. ファイル language-parser.tab.c をコンパイルすると、エラーが発生し、「yytname undeclared」というプロンプトが表示されました。 Bison バージョンを更新する必要があります。最新バージョンは ftp://ftp.gnu.org/pub/gnu/bison/ で見つけることができます。
5. make を実行すると、最初は正常に動作しますが、最終的には接続時に失敗します。最後のアプリケーションで、一部のファイルが見つからないというエラーが発生しました。
一部の古いバージョンの make では、functions ディレクトリにあるコンパイル済みファイルを同じディレクトリに置くことができません。cp *.o 関数を実行してから、make を実行して改善されるかどうかを確認してください。 その場合は、GNU Make のバージョンを更新する必要があります。
6. PHP に接続すると、未定義の参照というエラーが大量に表示されます。
ファイル内のリンク行を見て、関連するパッケージがすべて正しく含まれていることを確認します。通常、これは「-ldl」が欠落しており、サポートする必要があるデータベース パッケージがいくつかあることが原因です。
Apache 1.2.x に接続している場合は、EXTRA_LIBS 行に追加情報を追加し、Apache の Configure スクリプトを再実行することを忘れましたか? 配布パッケージの INSTALL ファイルを参照してください。
「-ldl」を追加するとすぐに libphp4.a が得られたと多くの人が言いました。
7. Apache 1.3 で PHP をコンパイルする方法がわかりません。
実際には非常に簡単で、次の手順に従ってください:

次の場所で Apache 1.3 ソース コードを入手します: http://www.apache.org/dist/。
/usr/local/src/apache-1.3 などの特定のディレクトリに解凍します。
PHP 配布パッケージ ディレクトリ ./configure --with-apache=//apache-1.3 で PHP をコンパイルします ( は、ユーザーの実際の apache-1.3 ディレクトリの場所に置き換えられます)。
「make」と入力し、「make install」と入力して PHP をコンパイルし、必要なファイルを Apache ディレクトリにコピーします。
//apache-1.3/src ディレクトリに移動し、構成ファイルに次の行を追加します: AddModule modules/php4/libphp4.a。
「./Configure」と入力し、「make」と入力します。
これで httpd ファイルが完成しました!

注: 新しい Apache ./configure スクリプトを使用することもできます。配布パッケージの README.configure を参照してください。もちろん、PHP 配布パッケージの INSTALL ファイルも参照してください。
8. Apache モジュールを (Unix 上で) 段階的にインストールしましたが、ブラウザで PHP スクリプトを開いたときに、保存するかどうかを尋ねられました。
これは、PHP モジュールがロードされていないことを意味します。次の 3 つの点から確認できます。

実行している Httpd が、PHP をコンパイルしたばかりの Httpd であることを確認します。 /path/to/binary/httpd -l を実行できます。
mod_php4.c がリストに表示されない場合。 , 間違った Httpd を実行している場合は、再インストールした方がよいでしょう。
Apache .conf ファイルに正しい Mime タイプを追加していることを確認してください: AddType application/x-httpd-php3 .php3 (PHP 3)
または AddType application/x-httpd-php .php (PHP) 4)
また、AddType 行が または ブロックに含まれていないことを確認してください。
最後に、デフォルトの設定ファイルの場所は Apache 1.2 と Apache 1.3 で異なります。AddType 行を追加した設定ファイルの場所を確認してください。このファイルが読み取られると、システムは通知します。

9. システムは --activate-module=src/modules/php4/libphp4.a を使用するように指示しましたが、ファイルがまったく存在しなかったため、 --activate-module=src/ に変更する必要がありました。 modules/php4/libmodphp4.a うまくいきません。どうすればよいでしょうか? libphp4.a は実際には存在しないことに注意してください。
PHP を静的モジュールにコンパイルしたいのです。 Apache の場合は、 --activate-module =src/modules/php4/libphp4.a を使用します。 しかし、システムは、私のコンパイラは ANSI 互換ではないと言います。
このエラー メッセージは Apache による誤解を招くものであり、新しいバージョンで修正できる可能性があります。
11. --with-apxs を使用して PHP をコンパイルすると、常に奇妙なエラーが発生します。
これが発生した場合は、次の 3 つの点から確認できます。まず、apxs Perl スクリプトをコンパイルするときに、Apache が適切なフラグ変数を作成しませんでした。apxs コマンドを試してください。通常は /usr で開きます。 /local/apache/bin/apxs または /usr/sbin/apxs のような行を見つけます。 my $CFG_CFLAGS_SHLIB = ' '; # Makefile.tmplmy $CFG_LD_SHLIB = ' '; に値が含まれているため、次のように変更します。 my $CFG_CFLAGS_SHLIB = '-fpic -DSHARED_MODULE'; # Makefile.tmplmy $CFG_LD_SHLIB = 'gcc'; # 2 番目の可能性は、Red Hat 6.1 および 6.2 の apxs スクリプトに表示されます。この行を見てください。 my $CFG_LIBEXECDIR = 'modules'; # APACI install で置き換えられている場合は、次の行に変更します。 my $CFG_LIBEXECDIR = '/usr/lib/apache'; # APACI install で置換 第三に、Apache を再構成/再インストールする場合は、 ./configure の後、make
12 の前に make clean を実行する必要があります。 microtime に関するエラー、および多くの RUSAGE_ に関するエラー
インストール中の make 中に次のエラーが表示される場合: microtime.c: 関数 `php_if_getrusage' 内:microtime.c:94: `usg' のストレージ サイズが不明microtime.c:97: `RUSAGE_SELF' が宣言されていません (この関数で最初に使用)microtime.c:97: (それぞれ未宣言の識別子は 1 回だけ報告されますmicrotime.c:97: 出現する関数ごとに。)microtime.c:103: `RUSAGE_CHILDREN' 未宣言 (この関数で最初に使用)make[3]: *** [microtime.lo] エラー1make[3]: ディレクトリ `/home/master/php-4.0.1/ext/standard' を終了しますmake[2]: *** [all-recursive] エラー 1make[2]: ディレクトリ `/home/master/ を終了しますphp-4.0.1/ext/standard'make[1]: *** [すべて再帰] エラー 1make[1]: ディレクトリ `/home/master/php-4.0.1/ext'make: *** [all-recursive] エラー 1
これはシステム上のエラーです。具体的な方法は、glibc と一致する glibc-devel パッケージをインストールすることです。 PHP を証明するには、次のようにします。 $ cat >test.c << PHP をアップグレードしたいのですが、現在実行している PHP の設定とインストールに使用した ./configure 行の内容はどこで確認できますか? PHP をインストールしたソース ディレクトリにある config.nice ファイルを実行する必要がある場合は、別の方法があります。 スクリプト。出力ページの最初の行は ./configure 行で、これは GD ライブラリを使用して PHP をコンパイルするときに使用します。実行中に奇妙なエラーが発生したり、セグメンテーション違反が発生したりすることがあります。
GD ライブラリと PHP をコンパイルするときに、同じ依存ライブラリ (libpng など) を使用していることを確認する必要があります。


http://www.bkjia.com/PHPjc/314067.html

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/314067.html技術記事この章では、コンパイル中に発生する可能性のある多くのエラー状態をまとめます。 1. 匿名 CVS を使用してソース コード パッケージの最新バージョンを取得しましたが、構成スクリプト ファイルがありませんでした。 2. Apache で動作するように PHP を構成したとき...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。