Rumah >pembangunan bahagian belakang >tutorial php >Cara menggunakan aplikasi web dengan betul melalui sftp dengan git
Menggunakan Aplikasi Web melalui SFTP dengan Git: Aliran kerja yang selamat dan cekap
Artikel ini meneroka menggunakan phpseclib dan git untuk penyebaran SFTP yang diselaraskan dan selamat. Kami akan merangkumi ciri -ciri utama, kaedah pengesahan, dan teknik automasi untuk mengoptimumkan proses penempatan anda.
Kelebihan utama:
Pasang phpseclib menggunakan komposer:
Pengurusan Fail (Muat naik dan penghapusan):
Menghapus fail dan direktori:
skrip penempatan kemudian menggunakan kelas git dan phpseclib ini untuk memuat naik/memadam fail dengan sewajarnya:
Menguruskan Kebenaran Fail:
Menggabungkan phpseclib dan git menyediakan penyelesaian yang mantap, selamat, dan cekap untuk penyebaran SFTP. Automasi proses ini dengan ketara menyelaraskan aliran kerja dan mengurangkan intervensi manual. Pertimbangkan implikasi keselamatan setiap kaedah pengesahan dan pilih yang paling sesuai untuk persekitaran anda. Ingatlah untuk menguji skrip penempatan anda dengan teliti sebelum melaksanakannya dalam persekitaran pengeluaran. (Nota: Coretan kod yang disediakan adalah contoh yang dipermudahkan dan mungkin memerlukan pelarasan berdasarkan persediaan dan persekitaran projek khusus anda. Pengendalian ralat dan logik yang lebih mantap harus ditambah untuk penggunaan pengeluaran.)<code class="language-bash">composer require phpseclib/phpseclib</code>
Pilihan yang paling selamat, menggunakan kunci peribadi untuk pengesahan.
<code class="language-php">namespace App;
use phpseclib\Crypt\RSA;
use phpseclib\Net\SFTP;
$key = new RSA();
$key->loadKey(file_get_contents('privatekey'));
$sftp = new SFTP('192.168.0.1');
if (!$sftp->login('username', $key)) {
exit('Login Failed');
}</code>
Memuat naik fail: <code class="language-php">$contents = file_get_contents('path/to/local/file');
$sftp->put('remote/path/file.txt', $contents);</code>
<code class="language-php">$sftp->delete('remote/path/file.txt'); // Single file
$sftp->delete('remote/directory', true); // Recursive directory deletion</code>
<code class="language-php">// (Simplified Git class example - error handling omitted for brevity)
class Git {
public function getChangedFiles($startCommit, $endCommit) {
// ... (Git command execution using Symfony Process component) ...
return $changedFiles; // Array of added, modified, and deleted files
}
// ... (Other Git helper functions) ...
}</code>
<code class="language-php">$git = new Git();
$changedFiles = $git->getChangedFiles('HEAD~1', 'HEAD'); // Compare with previous commit
foreach ($changedFiles['added'] as $file) {
// ... (Upload file using $sftp->put()) ...
}
foreach ($changedFiles['deleted'] as $file) {
// ... (Delete file using $sftp->delete()) ...
}</code>
<code class="language-php">$sftp->exec('php artisan migrate');</code>
<code class="language-php">$sftp->chmod(0755, 'remote/path/file.txt'); // Set permissions</code>
(komersial)
git-deploy-php
PHPloy
Atas ialah kandungan terperinci Cara menggunakan aplikasi web dengan betul melalui sftp dengan git. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!