コンパイルの問題
コンパイル|問題
この章では、コンパイル中に発生する可能性のある多くのエラー状態をまとめます。 1. 匿名 CVS を使用してソース コード パッケージの最新バージョンを取得しましたが、構成スクリプト ファイルがありませんでした。 2. Apache で動作するように PHP を構成するときに問題が発生しました。 httpd.h が見つからないと表示されましたが、実際には存在していました。 3. conifgure を実行すると、インクルード ファイルまたはライブラリ (GD、gdbm、またはその他のパッケージ) が見つからないと表示されました。ファイル language-parser.tab.c をコンパイル中に、エラーが発生しました。プロンプト: yytname undeclared. 5. 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. make を実行すると、microtime に関する多くのエラーと、多くの RUSAGE_ に関するエラーが発生します。 13. PHP をアップグレードしたいのですが、現在実行している PHP の元の設定 (以前に使用していたもの) はどこで確認できますか。インストール? ./configure 行の内容? 14. GD ライブラリで PHP をコンパイルすると、実行中に奇妙なエラーが発生するか、
の最新バージョンを取得するために使用します。ソース コード パッケージですが、configure スクリプト ファイルはありません
configure.in から構成スクリプト ファイルを生成できるように、GNU autoconf パッケージをインストールする必要があります。トップレベルで ./buildconf を実行するだけです。 CVS サーバーのディレクトリに移動してソース コードを取得します。 (注: --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 をマークする必要があります 3。 conifgure、インクルード ファイルまたはいくつかのライブラリ (GD、gdbm、またはその他のパッケージ) が見つからないと表示されます。
これらのヘッダー ファイルまたは非標準ライブラリの場所を確認するには、configure スクリプトを参照してください。いくつかの特別なフラグを C プリインストーラーに送信する必要があります。例: CPPFLAGS=-I/path/to/include LDFLAGS=-L/path/to/library ./configure
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/ で見つけることができます。make を実行すると、最初はうまくいきましたが、最後のアプリケーションに接続すると、いくつかのファイルが見つからないというエラーが発生しました。
一部の古いバージョンの make では、functions ディレクトリにあるコンパイル済みファイルを同じディレクトリに置くことができません。cp *.o function
を実行してから、make を実行して、改善されるかどうかを確認してください。 その場合は、GNU Make のバージョンを更新する必要があります。 6.
PHP に接続すると、未定義の参照というエラーが大量に表示されます。 ファイル内の接続行を見て、関連するパッケージがすべて正しく含まれていることを確認します。通常、これは「-ldl」が欠落しており、サポートする必要があるデータベース パッケージがいくつかあることが原因です。 Apache 1.2.x に接続している場合は、EXTRA_LIBS 行に追加情報を追加し、Apache の Configure スクリプトを再実行することを忘れましたか? 配布パッケージの INSTALL ファイルを参照してください。 「-ldl」を追加するとすぐに libphp4.a が得られたと多くの人が言いました。
7. Apache 1.3 で PHP をコンパイルする方法がわかりません。
実際、これは非常に簡単で、以下の手順に従ってください:
次の場所 http://www.apache.org/dist/ から Apache 1.3 ソース コードを取得します ファイルを解凍します。 /usr/local/src/apache-1.3 などの特定のディレクトリ
PHP ディストリビューション パッケージ ディレクトリで PHP をコンパイルします ./configure --with-apache=/
- と入力します:
- make
次に、: - make install
PHP をコンパイルし、必要なファイルを Apache ディレクトリにコピーします -
//apache に変更します。 1.3/src ディレクトリで、次の行をファイルに追加します: AddModule modules/php4/libphp4.a. Type: - ./Configure
これで httpd ファイルが完成しました。 注意:你也可以使用新的Apache ./configure 脚本. 见发行包里的 README.configure 当然也要看看PHP发行包里的 INSTALL 文件。
8. 我按照步骤一步一步安装了Apache模块(Unix下), 可是在浏览器里打开 PHP 脚本时它却问我是否要保存。
这意味着你的PHP模块没有被加载。你可从下面三点来检查:-
确认你运行的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行的配置文件的位置 . 你可以在 httpd.conf 放一些明显的错误或改变,这样如果这文件被读的话,系统会通知你。
9. 系统说使用: --activate-module=src/modules/php4/libphp4.a, 可那文件根本不存在, 我只好改成 --activate-module=src/modules/php4/libmodphp4.a 好了,它不工作了! 该怎么办?
请注意 libphp4.a 事实并不存在. apache 进程会创建它!
10. 我要把PHP编译成Apache的静态模块,用: --activate-module=src/modules/php4/libphp4.a 可是系统说我的编译器不是 ANSI 兼容的。
这个错误消息是 Apache 误导的,可以用更新版本来修正它。
11. 我用 --with-apxs编译PHP时, 我总是得到一些奇怪的错误。
出现这样的情况可以从三点来检查. 第一, 因为某种原因,Apache 在编译apxs Perl 脚本的时候, 它没有创建适当的标志变量, 找到你的apxs脚本 (试试命令 which apxs, 通常在 /usr/local/apache/bin/apxs or /usr/sbin/apxs. 打开它找到象下面这样的行:如果你看到的是这样,那么问题就出在这里. 因为值里包含的是空格或其它不正确的值, 如 'q()'. 把它样变成象下面的那样:my $CFG_CFLAGS_SHLIB = ' '; # substituted via Makefile.tmplmy $CFG_LD_SHLIB = ' '; # substituted via Makefile.tmplmy $CFG_LDFLAGS_SHLIB = ' '; # substituted via Makefile.tmpl
ログイン後にコピー第二种可能仅仅出现在Red Hat 6.1 和 6.2上. apxs 脚本 Red Hat 版有错. 看这行:my $CFG_CFLAGS_SHLIB = '-fpic -DSHARED_MODULE'; # substituted via Makefile.tmplmy $CFG_LD_SHLIB = 'gcc'; # substituted via Makefile.tmplmy $CFG_LDFLAGS_SHLIB = q(-shared); # substituted via Makefile.tmpl
ログイン後にコピー如果你看到了,就把它改成下面的行:my $CFG_LIBEXECDIR = 'modules'; # substituted via APACI install
ログイン後にコピー第三, 你要是 重配置/重安装 Apache, 必须在 ./configure 后,在 make之前,执行make cleanmy $CFG_LIBEXECDIR = '/usr/lib/apache'; # substituted via APACI install
ログイン後にコピー
12. 在 make时, 我得到很多关于microtime错误, 还有许多 RUSAGE_ stuff.
在安装过程中 make时,如果你看到下面的错:microtime.c: In function `php_if_getrusage':microtime.c:94: storage size of `usg' isn't knownmicrotime.c:97: `RUSAGE_SELF' undeclared (first use in this function)microtime.c:97: (Each undeclared identifier is reported only oncemicrotime.c:97: for each function it appears in.)microtime.c:103: `RUSAGE_CHILDREN' undeclared (first use in this function)make[3]: *** [microtime.lo] Error 1make[3]: Leaving directory `/home/master/php-4.0.1/ext/standard'make[2]: *** [all-recursive] Error 1make[2]: Leaving directory `/home/master/php-4.0.1/ext/standard'make[1]: *** [all-recursive] Error 1make[1]: Leaving directory `/home/master/php-4.0.1/ext'make: *** [all-recursive] Error 1
ログイン後にコピー
那是你的系统出错了. 你应该修复 /usr/include 文件.具体做法是安装和你的glibc匹配的glibc-devel 包. 这些错绝对和PHP无关,为了证明,你可以这样做:如果出错,证明你的包含文件受损了.$ cat >test.c <<X#include <sys/resource.h>X$ gcc -E test.c >/dev/null
ログイン後にコピー
13. 我想升级PHP,我在哪可以看到我现在运行的PHP 的当初配置安装时所使用的./configure 一行的内容.?
你可以看你安装PHP源目录下的 config.nice 文件. 如果不行还有另外一种方法.你只要简单运行脚本. 在输出页面的第一行,就是 ./configure 行, 是你当初用来配置PHP的那行.<?php phpinfo(); ?>
ログイン後にコピー
14. 编译带GD库的PHP时,它不是给一些奇怪的错, 就是执行时产生 segfaults 段错误.
你必须确认你在编译 GD 库 和 PHP 时所使用同样的依赖库 (例如 libpng).
-

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

あなたが経験豊富な PHP 開発者であれば、すでにそこにいて、すでにそれを行っていると感じているかもしれません。あなたは、運用を達成するために、かなりの数のアプリケーションを開発し、数百万行のコードをデバッグし、大量のスクリプトを微調整してきました。

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

PHP は、Web サイトがソーシャル メディア機能を簡単に統合できるようにするツールを提供します。1. ユーザーがコンテンツを共有するためのソーシャル メディア共有ボタンを動的に生成します。2. OAuth ライブラリと統合して、シームレスなソーシャル メディア ログインを実現します。3. HTTP ライブラリを使用してソーシャル メディアをキャプチャします。メディア データ、ユーザー プロフィール、投稿、その他の情報を取得します。
