[1] ページ間で変数を転送することはできません。最新の PHP バージョンでは、取得、投稿、およびセッションの自動グローバル変数がオフになっているため、前のページから送信された変数を取得するには、$_GET['foo']、$_POST を使用します。 . ['foo'],$_SESSION['foo'] を取得します。もちろん、自動グローバル変数を on に変更することもできます (php.ini を reGISter_globals = On に変更します)。互換性を考慮して、新しい記述方法に慣れることをお勧めします。
【2】 Win32 で apache2 が get メソッドを使用して中国語パラメータを渡すと、エラーが発生します:
test.php?a=Hello&b=你好
パラメータを渡すと内部エラーが発生します
解決策: 「test.php?a」 = ".urlencode(Hello)."&b=".urlencode(Hello)
......
【3】win32環境でのセッションが正常に動作しない
php.iniのデフォルトのsession.save_path = /tmp
これは明らかに Linux での設定です。Win32 ではセッション ファイルの読み書きができないため、セッションが使用できなくなります。たとえば、session.save_path = c:Windows emp
4 となります。 】エラー情報を表示します
php.iniのdisplay_errors = On、error_reporting = E_ALLの場合、すべてのエラーとプロンプトが表示されます。以前のphpの記述方法を使用している場合、エラーを修正するためにオンにするのが最善です。メッセージは主に将来に関するものです。変数に値が割り当てられる前に、変数が呼び出されるときにプロンプトが表示されます。解決策は、変数を検出またはシールドすることです。
例えば $foo を表示するには、 if(isset($foo)) echo $foo または echo @$foo です
【5】mail() は Win32 ではメールを送信できません
linux で設定した Sendmail は送信できますが、 win32 メールを送信するには、smtp サーバーを呼び出す必要があります。php.ini = ip //ip は、検証機能のない smtp サーバーです (インターネット上で見つけるのは困難です)
php でメールを送信するための最良の解決策は、次のとおりです。ソケットを使用して、転送サーバーを使用せずに相手のメールサーバーに直接送信します。
【6】MySQL の初期インストールでパスワードが設定されていない場合は、update mysql.user setpassword="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の違い
両者に大きな違いはありませんが、インクルードするファイルが存在しない場合、includeは通知を促し、その後次のステートメントを実行し続けると、requireは致命的なエラーを促します。そして出ます。
私のテストによると、win32 プラットフォームでは、最初にインクルードされてから実行されるため、ディレクトリの混乱を引き起こす可能性がある、インクルードされたファイルに include ステートメントや require ステートメントを含めないことが最善です。 *nux では状況が異なる可能性がありますが、まだテストしていません。
ファイルを複数回インクルードしたくない場合は、include_once または require_once## を使用してドキュメント データを読み書きできます。
関数 r($file_name) {
$filenum=@fopen($file_name,"r")
$file_data=@fread($filenum,file_name($file_name));
@fclose($filenum);
$file_data を返す
}
function w($file_name,$data,$method="w"){
$filenum=@fopen($file_name,$method); $filenum,LOCK_EX);
$file_data=fwrite($filenum,$data);
return $file_data;
【12】isset() と empty() の違い
は変数をテストするために使用されますが、 isset() は変数に値が割り当てられているかどうかをテストし、 empty() は値が割り当てられた変数が空かどうかをテストします。
値を割り当てずに変数を PHP で参照する場合は許可されますが、変数に空の値が割り当てられている場合は、$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. 以下のように、フォーム内に複数のファイル入力ボックスを設置し、配列で名前を付けます:
<form action="" method=post>
<input type=file name=usefile[]>
<input type= file name=usefile[]>
<input type=file name=usefile[]>
</form>
このようにして、サーバー側で以下のテストを行います。
echo "
"; <br>print_r($_FILES) ); <br> echo "</pre>"; <br> 2. 以下のように、複数のファイル入力ボックスを異なる名前で設定します。 <br>