كيفية تغيير أذونات الملف على الخادم SFTP باستخدام phpseclib؟
سؤال
وحاولت $sftp->chmod('0755', "file.zip");
و$sftp->chmod('0755', "file.zip");
ولكن في كلتا الحالتين تم تعيين إذن إلى 363 بدلا من ذلك.
المحلول
0755 و "0755" ليست نفس الشيء كما هو موضح هكذا:
<?php echo '0755' == 0755 ? 'equal' : 'not equal'; ?>;
ولكل ذلك، حاول إزالة علامات الاقتباس المفردة حول 0755.
وتتوقع السبب phpseclib أذونات أن تكون ممثلة كقيمة ثماني ( '0755' ويلقي إلى قيمة عشرية - ليست وثماني واحد) لأن هذه هي الطريقة التي ftp_chmod
يفعل ذلك وهذا ما غرار Net_SFTP::chmod()
بعد. (في الواقع، الى حد كبير كل من API SFTP phpseclib وعلى غرار بعد تمديد API FTP PHP ل)
نصائح أخرى
وفي تخمين الأذونات 1363. وبعبارة أخرى ثماني (755). انها تخمين كاملة، ولكن أود أن أقترح أن وظيفة شمود تتخذ واسطة عشري، بدلا من واحد ثماني.
ويمكنك استخدام
$sftp->chmod(0755, $file);
وأنت لا ينبغي أن أذونات مساهمة في وظيفة phpseclib chmod()
كسلسلة.