[1] ページ間で変数を転送することはできません。最新の PHP バージョンでは、取得、ポスト、およびセッションの自動グローバル変数がオフになっているため、前のページから送信された変数を取得するには、$_GET['foo'], $ を使用します。 _POST. ['foo'],$_SESSION['foo'] を取得するには
もちろん、自動グローバル変数を on に変更することもできます (互換性を考慮して、php.ini を register_globals = On に変更することをお勧めします)。新しい書き方に慣れてください。
[2] Win32 で get メソッドを使用して中国語パラメータを apache2 に渡すとエラーが発生します
test.php?a=Hello&b=Hello
パラメータを渡すと内部エラーが発生します
解決策: "test.php?a=" 。 urlencode(Hello)."&b=".urlencode(Hello)
.............
【3】win32環境でのセッションが正常に動作しない
php.inidefault session.save_path = /tmp
これは明らかに Linux での設定です。Win32 では PHP がセッション ファイルを読み書きできないため、セッションが使用できなくなります。
絶対パスに変更してください。たとえば、session.save_path = c:windowstemp
【4】 】エラー情報を表示します
php.iniのdisplay_errors = On、error_reporting = E_ALLの場合、エラー修正のためにデバッグ中にオンにするのが最善です。メッセージは主に未定義の変数に関するものです。値を割り当てる前に変数が呼び出されるときにプロンプトが表示されます。解決策は、検出またはブロックすることです
たとえば、$foo が表示されている場合は、 if(isset($foo)) echo $foo または echo @$foo を実行できます。
【5】mail()はWin32 Mailではメールを送信できません
Linuxで設定したSendmailは送信できますが、win32ではメールを送信するにはsmtpサーバーを呼び出す必要があります
php.ini = ip //ipのSMTPを変更します認証機能のないsmtpサーバー(インターネット上で見つけるのは難しい)
phpでメールを送信する場合の最善の解決策は、サーバーを転送せずにソケットを使用して相手のメールサーバーに直接送信することです
[6] パスワードが設定されていない場合。 mysql の初期インストールでは、
update mysql.user set password="yourpassword" where user= "root" を使用する必要があります
パスワードを変更
【7】ヘッダーは既に送信されました
このエラーは通常、HEADER を使用した場合に発生する可能性があります。いくつかの理由が考えられます。 1. HEADER を使用する前に PRING または ECHO を実行した 2. 現在のファイルの前に空行がある 3. ファイルを INCLUDE しており、ファイルの最後に空行がある可能性があります。そうしないと、このエラーが発生します。出力で。 !
[8] php.iniを変更しても変化なし
IISやApacheなどのWebサーバーを再起動すると最新の設定が適用されます
[9] PHPは2003にインストールされています(インストール方法ISAPI、専門家にアドバイスを求めてください)
PHP4 の php4isapi.dll は 2003 と競合するようで、CGI モードでのみインストールできます
ステップ 1、まずインストール プログラムを www.php.net にインストールします: php-4.2。 .3-installer.exe、php-4.2.3-installer.exe をインストールする前に、最新バージョンを見つけて、IIS6.0 が起動し、アクセスできることを確認することもできます。インストール後、デフォルトの Web サイト --> [アプリケーション構成] に移動します。
ステップ 2: [Web サービス拡張機能] --> [新しい Web サービス拡張機能] をクリックします。
ステップ 3: [拡張機能] -->php を追加します。
ステップ 4:検索 php.exe へのパスを追加します。
ステップ 5: 確認するだけです。
ステップ 6: PHP サービス拡張機能を選択し、「許可」をクリックします。
【10】
SQL文が機能せず、データベース操作が失敗する場合があります
デバッグする最も簡単な方法は、SQL文をエコーして変数の値が取得できるかどうかを確認することです
【11】includeとrequireの違い
両者に違いはありません。大きな違いがあります。インクルードするファイルが存在しない場合、インクルードは通知を表示し、次のステートメントを実行し続けると致命的なエラーが発生して終了します。
私のテストによれば、 win32 プラットフォームでは、これらは最初にインクルードされてから実行されるため、インクルードされたファイルには include ステートメントや require ステートメントを含めないことをお勧めします。ディレクトリの混乱が生じるためです。*nux では状況が異なる可能性があります。まだテストしていません
ファイルを複数回インクルードしたくない場合は、include_once または require_once## を使用してドキュメント データの読み取りと書き込みを行うことができます
function r($ file_name) {
$filenum=@fopen($ file_name,"r");
$file_data=@fread($filenum,file_name($file_name));ファイル番号);
$file_data;
関数 w($file_name,$data,$method="w"){
$filenum=@fopen($file_name,$method); ;
$file_data=fwrite($filenum,$ data);
return $file_data;
【12】isset() と empty() の違い
どちらも変数をテストするために使用されます
ただし、 isset() は変数が代入であるかどうかをテストし、 empty() は値が割り当てられている変数が空かどうかをテストします
変数に値が割り当てられていない場合、PHP で参照することはできますが、通知プロンプトになります
変数に null 値、$foo =""、$foo=0、または $foo=false が割り当てられている場合、empty($foo) は true を返し、isset($foo) も true を返します。 null 値を代入しても変数の登録は解除されません。
変数の登録を解除するには、unset($foo) または $foo=NULL を使用できます
[13] mysql クエリステートメントにはキーワードが含まれています
php が mysql をクエリするとき、mysql テーブル名またはカラム名にキーワードが含まれる場合があります
これクエリ内のエラーである可能性があります。例えば、テーブル名がorderの場合、クエリ時にエラーが発生します
簡単な方法は、SQL文のテーブル名またはカラム名に`[タブキーの上]を追加して区別することです
例えば、select * `order` から
[14] HTTP プロトコルを一度経由する 複数のファイルをアップロードするメソッド
には 2 つのアイデアがあり、同じメソッドの 2 つの実装です。特定のプログラムは自分で設計する必要があります
1. 次のように、フォームに複数のファイル入力ボックスを設定し、配列で名前を付けます。
"; <br>print_r($_FILES); <br><br>1. フォームに複数のファイル入力ボックスを設定します。 <br><フォームアクション= ""メソッド=post> <br><入力タイプ=ファイル名=usefile_b> <br></フォーム> ; <br>サーバー側で同じテストを実行します: <br>echo "<pre class="brush:php;toolbar:false">"; <br>echo "";
[1] 変数の get、post、session はページ間で転送できません。最新の PHP バージョンでは、自動グローバル変数がオフになっているため、前のページから送信された変数を取得するには、$_GET['foo'... を使用します。