1

かなり興味深い問題があります。FileZilla と Notepad++ を使用して PHP スクリプトを編集しています。という 1 つのスクリプトfunctions.phpが編集され、大幅に変更されています。残念ながら、編集して再アップロードするたびにエラー ログを確認すると、再アップロードするたびにサイト全体で約 5 つのエラーがスローされていることがわかります。ほんの数秒しかかかりませんが、スクリプトは私の Web サイトのほぼすべてのページに含まれているため、その数秒でエラーが発生するのに十分です。

functions2.phpおそらく、基本的に同じものを手に入れることができると思っていました。利用できない場合、サイトのスクリプトを取得functions2.phpする方法functions.phpはありますか? ありがとう。

EDIT:私が得るエラーは通常、「解析エラー:構文エラー、予期しない$ end ...」のようなもので、スクリプトが部分的にアップロードされていることを意味すると思います。これにより、 file_exists が最善の解決策ではない可能性があります。ファイルはそこにありますが、「途中」にすぎないためです。

アップロードと名前の変更は良い解決策のように思えますが、アップロードのたびに少し面倒です :) 私は何度も再アップロードしてテストします。

PHP構文エラーについてphpファイルをチェックする方法はありますか? これは、この場合に非常に便利です...

4

2 に答える 2

1

FTP を使用する代わりに、ファイル名と置き換えられるファイルの MD5 / SHA とともに、アップロードされるファイルの POST を取得する PHP / Perl / Ruby スクリプトを検討してください (投稿にすべてが含まれていることを確認するため)。 )。Apache ログインの背後など、セキュリティも追加する必要があります。

投稿されたファイルが PHP / Perl / Ruby スクリプトによって受け入れられると、md5 がチェックされ (そしてセキュリティも渡される)、サーバーは「古い」バージョンを「新しい」バージョンで上書きします。これは FTP よりもはるかに高速で、エラーを減らす必要があります。

考えられる唯一の問題は、サーバー上のファイル許可を、Web サーバーからの書き込みアクセスを許可するように設定する必要があることです。

ただのアイデア。

別のアイデア...

  • ステージング ディレクトリにアップロードする
  • sshでログインして実行mv /staging/<file> ./

おそらく、これを 1 時間に 1 回実行する cron ジョブを設定することもできます。

于 2012-12-09T02:32:19.110 に答える
0

次のことができます。

1) function.php が存在しない場合に function2.php を取得するコードを用意する

見る

http://php.net/manual/en/function.file-exists.php

http://php.net/manual/en/function.require.php

<?php
if(file_exists('function.php')){
    require_once 'function.php';
}else{
    require_once 'function2.php';
}
?>

2) ファイルを更新する場合は、function.php を削除し、新しいファイルを newfile.php にアップロードしてから、newfile.php の名前を function.php に変更します。

このようにして、半分アップロードされたファイルがフェッチされようとすることはなく、名前の変更は非常に迅速です。

file_exists と require_once の間でエラーが発生する可能性があります (存在する場合は削除され、require_once に移動して存在しなくなります)。しかし、うまくいけば、これはそれほど頻繁には起こらないでしょう。少なくとも、これが発生した場合は完全に失敗し、ページをリロードできます。多分それは起こらないでしょう。

于 2012-12-09T02:25:36.973 に答える