it-swarm.asia

لتنفيذ الإجراء المطلوب يحتاج وورد إلى الوصول إلى خادم الويب الخاص بك. يرجى إدخال بروتوكول نقل الملفات الخاص بك

أتابع تغيير أذونات الملفات "WordPress Codex ، ولكن عندما أحاول تحديث و/أو تثبيت plugin و/أو theme خلال wp-admin ، أتلقى ما يلي:

لتنفيذ الإجراء المطلوب ، يحتاج WordPress إلى الوصول إلى خادم الويب الخاص بك. الرجاء إدخال بيانات اعتماد FTP للمتابعة. إذا كنت لا تتذكر بيانات الاعتماد الخاصة بك ، يجب عليك الاتصال بمضيف الويب الخاص بك.

من مستوى نظام الملفات:

# ls -ld wp-content/ wp-content/plugins/ wp-content/themes/
drwxrwxr-x.  6 root Apache 4096 Jun  2 12:01 wp-content/
drwxrwxr-x. 28 root Apache 4096 Jun  2 00:00 wp-content/plugins/
drwxrwxr-x. 11 root Apache 4096 May 11 16:34 wp-content/themes/
# 

httpd يعمل كـ Apache:

$ ps auxw | grep httpd
root     20158  0.0  0.1 533080 26192 ?        Ss   15:03   0:00 /usr/sbin/httpd -DFOREGROUND
Apache   20233  0.0  0.2 612608 34908 ?        S    15:03   0:00 /usr/sbin/httpd -DFOREGROUND
Apache   20234  0.0  0.2 538772 46904 ?        S    15:03   0:00 /usr/sbin/httpd -DFOREGROUND
Apache   20235  0.0  0.1 536832 24268 ?        S    15:03   0:00 /usr/sbin/httpd -DFOREGROUND
Apache   20236  0.0  0.2 626272 35640 ?        S    15:03   0:00 /usr/sbin/httpd -DFOREGROUND
Apache   20237  0.0  0.0 535296  9592 ?        S    15:03   0:00 /usr/sbin/httpd -DFOREGROUND
Apache   20322  0.0  0.1 537088 26620 ?        S    15:03   0:00 /usr/sbin/httpd -DFOREGROUND
Apache   20380  0.0  0.2 626060 33816 ?        S    15:04   0:00 /usr/sbin/httpd -DFOREGROUND
Apache   20429  0.0  0.1 538216 29184 ?        S    15:04   0:00 /usr/sbin/httpd -DFOREGROUND
Apache   20447  0.0  0.2 629380 43180 ?        S    15:04   0:00 /usr/sbin/httpd -DFOREGROUND
Apache   20448  0.0  0.2 626172 35224 ?        S    15:04   0:00 /usr/sbin/httpd -DFOREGROUND
alexus   24073  0.0  0.0 112652   972 pts/9    R+   15:13   0:00 grep --color=auto httpd
$ 

أود أن أكون قادرًا على تنفيذ الإجراء المطلوب (install و/أو update) من خلال /wp-admin بدون بيانات اعتماد FTP.

كيف أقوم بذلك؟

21
alexus

أضف التالي إلى wp-config.php:

define( 'FS_METHOD', 'direct' );

اسمحوا لي أن أعرف كيف يعمل لك.

42
Narendra Solanki

هذا يعني أن WordPress لديه إذن محدود لإجراء تغييرات في المجلد الذي تم تثبيته.

من أجل إصلاح هذا ، كل ما عليك القيام به هو توفير الأذونات اللازمة لنفسه.

قم بتشغيل الأمر التالي في موجه الأوامر الطرفية/المعجون/سطر الأوامر بعد الاتصال بالخادم عبر SSH:

Sudo chown -R Apache:apache /var/www/html

الخروج هذه المادة للحصول على تفاصيل كاملة.

12
Syamraj K

ليست إجابة مباشرة ، ولكن ربما يجب أن يقال - هذه مشكلة واحدة يجب عليك تجنب حلها إلا إذا كنت تتحدث عن تنمية محلية وفي هذه الحالة يمكنك فقط تعيين الأذونات على 777.

والسبب هو أنه إذا تمكن خادم الويب من الكتابة فوق الشفرة الخاصة بك ، فستتمكن أي تعليمات برمجية ضارة تعمل عليها من القيام بذلك أيضًا. المخاطرة أكبر بكثير من راحة توفير بضع ثوان من خلال عدم الحاجة إلى كتابة بيانات اعتماد ftp.

1
Mark Kaplun

على الرغم من أنه من الصحيح تمامًا امتلاك الملكية كـ root:Apache مع الأذونات 775 و httpd لتشغيلها كـ Apache ، إلا أن Wordpress لا يحب ذلك. إنها تريد أن يكون المالك Apache ، وفقًا لـ wp-admin/includes/file.php:

    // Attempt to determine the file owner of the WordPress files, and that of newly created files
   $wp_file_owner = $temp_file_owner = false;
   if ( function_exists('fileowner') ) {
      $wp_file_owner = @fileowner( __FILE__ );
      $temp_file_owner = @fileowner( $temp_file_name );
  }

لك أن تكون:
wp_file_owner = الجذر
temp_file_owner = Apache

if ( $wp_file_owner !== false && $wp_file_owner === $temp_file_owner ) {
    // WordPress is creating files as the same owner as the WordPress files,
    // this means it's safe to modify & create new files via PHP.
    $method = 'direct';
    $GLOBALS['_wp_filesystem_direct_method'] = 'file_owner';
} elseif ( $allow_relaxed_file_ownership ) {
    // The $context directory is writable, and $allow_relaxed_file_ownership is set, this means we can modify files
    // safely in this directory. This mode doesn't create new files, only alter existing ones.
    $method = 'direct';
    $GLOBALS['_wp_filesystem_direct_method'] = 'relaxed_ownership';
}

إذا كان $ wp_file_owner هو نفسه $ temp_file_owner ، فتابع. سيتم القبض عليك في elseif ، والتي وفقًا للتعليق لا تسمح بالحذف/الإنشاء ، ولكن فقط التحديثات (لقد قمت بالتحقق من ذلك عن طريق تحديث رمز البرنامج المساعد من داخل Wordpress ، وقد نجحت).

لاحظ أنني لم أنظر بشكل مكثف من خلال الكود ، وهذا مجرد تفسير سريع لي. واجهت نفس المشكلة وبمجرد تبديل المستخدم: group بحيث يكون المستخدم httpd هو أيضًا مالك الملف ، لم يعد يطالب ببيانات اعتماد FTP بعد الآن.

1
w00t

في حالتي ، قمت بحل هذا عن طريق التبديل من GIT إلى وضع FTP.

لا مزيد من التحذير.

ربما هذا سوف يساعد شخص آخر أيضا.

0
MarkPraschan

على الرغم من أن السؤال ليس جديدًا ، إلا أنني أريد إضافة سنتي بشأن هذه القضية أيضًا.

هناك الكثير من ppl لديهم Centos (7) على خادم VPS الخاص بهم ويمكن لخطوط التعليمات البرمجية التالية حل مشكلتهم.

لإيمهو علاقة كاملة بـ SELinux التي تمنع ووردبريس من القيام بعمله كما يتمنى. يذهب إلى أبعد من ذلك لشرح ما SELinux وما هو عليه. لمعلوماتك تبدأ المقدمة بـ:

نظام Linux-SELinux المحسن للأمان هو آلية أمنية إلزامية للتحكم في الوصول (MAC) يتم تنفيذها في النواة.

(فقط 3 خطوات للتتبع:

  • 1 افتح محطة (أو الوصول إلى الخادم من خلال SSH)
  • 2 أضف سطر الكود التالي chcon -R -t httpd_sys_content_t /var/www/html/wordpress
  • 3 أضف سطر الكود الثاني chcon -R -t httpd_sys_rw_content_t /var/www/html/wordpress

لا إعادة تشغيل من الخادم أو إعادة تشغيل من أي الخفي اللازمة.

لن أقول إن هذا يساعد الجميع ، لكن بالنسبة لأولئك الذين لم يعطّلوا SELinux ، يجب أن يكون هذا بمثابة تخفيف.

في صحتك

ملاحظة: يرجى التكيف مع الاحتياجات الخاصة بك (معنى المسار إلى وورد)

تحرير: تأكد من إزالة السطر define("FS_METHOD", "direct"); عند استخدامه/تم استخدامه في wp-config.php لأن هذا أمر لا مفر منه على الإطلاق عندما تفعل أسطر الكود أعلاه كما تريد.

0
Charles