it-swarm-eu.dev

Nelze nainstalovat nové pluginy z důvodu chyby „Nelze vytvořit adresář“

Člen fakulty má potíže s instruktážní instalací wordpress. Odstranění problémů s individuálním svolením bylo zasaženo a zmeškáno a stalo se z nich trvalá bolest, takže se zde zeptám. Co mohu udělat, aby WP Jen práce? Ty druhy chyb, které dostanou:

Instalace pluginu: Lightbox 2 2.9.2 Stažení instalačního balíčku z http://downloads.wordpress.org/plugin/lightbox-2.2.9.2.Zip … Rozbalení balíčku… Nelze vytvořit adresář. /home/CIM140/public_html/wordpress/wp-content/upgrade/lightbox-2.tmp

Když jsem su as www-data (uživatel Apache běží jako v Ubuntu), můžu tento adresář udělat v pořádku. Můj test wp instance nainstaluje tento plugin v pohodě, takže jsem na ztrátě, proč to selže pro ně.

4
jldugger

@pwnguin,

Měl jsem stejné problémy se spuštěním mod_php s WordPress a konečně jsem na to přišel.

# chown www-data:www-data  /home/CIM140/public_html/wordpress/ -R

Dokud toto políčko ovládáte, nezpůsobí to žádné bezpečnostní problémy.


UPRAVIT:

Také budete muset změnit umask na 022, takže nové adresáře vytvořené WordPress bude mít 755 oprávnění a soubory budou mít 644 oprávnění.

Další možností je přepsat výchozí oprávnění k souborům v souboru wp-config.php:

define('FS_CHMOD_DIR', (0755 & ~ umask()));
define('FS_CHMOD_FILE', (0644 & ~ umask()));

Můžete také vynutit metodu souborového systému pro aktualizace.

  • (Primární Preference) "Direct" nutí jej používat Direct File I/O požadavky z PHP, to je plná otevření bezpečnostních problémů na špatně nakonfigurovaných hostitelů, Toto je vybráno automaticky, když je to vhodné.
  • (Sekundární předvolba) "ssh" má vynutit použití rozšíření SSH PHP.
  • (3. předvolba) "ftpext" je vynutit použití FTP PHP rozšíření pro FTP přístup a nakonec
  • (4. předvolba) "ftpsockets" používá PHP Sockets Class pro FTP přístup.

Lze je definovat pomocí wp-config.php pomocí: define('FS_METHOD', 'ftpext');

Všechny aktuálně definované konstanty můžete získat příkazem print_r(@get_defined_constants()); v php.

5
Chris_O

Pro mě (na Ubuntu) jsem musel přidat umask 002 do /etc/Apache2/envvars, aby Wordpress mohl nahrát pluginy/obrázky s 775 oprávněními místo 755 (tj. Umožnit komukoli kromě Apache a root změnit nahrané soubory)

0
willbradley

Abyste pochopili, proč máte tyto problémy, musíte pochopit základní pojmy vlastnictví.

V podstatě víte, že Apache běží jako uživatel www dat. To je důvod, proč nastavení vše, co vlastnil tento uživatel funguje, protože WordPress ověřuje, že může vytvořit soubory jako uživatel, který vlastní vlastní soubory. Takže to, co děláte, je vytvořit vše, co vlastní uživatel, který vlastní soubory.

Pokud máte úplnou a úplnou kontrolu nad strojem, je to v pořádku. Na druhou stranu, pokud je to sdílený hosting server, pak jste vytvořili bezpečnostní díru.

Normálně fungují webové servery jako nějaký uživatel (např. Www-data), který pak spouští kód od jiných uživatelů (např. "Otto", můj uživatelský účet). V této situaci by webový server neměl možnost vytvářet soubory jako „otto“, a proto by nemohl správně vytvářet soubory jako můj účet. Tak, tato kontrola WordPress, pokud jde o vytváření řádně vlastněných souborů a tím i možnost instalovat pluginy nebo aktualizovat soubory by se nezdařilo, správně, protože ssoubory ve vlastnictví uživatele sdílené webserver uživatele by bylo bezpečnostní riziko .

V takovém případě by WordPress měl správně vyzvat k zadání FTP pověření, nebo něco takového. To by byl způsob, jak obejít problém s uživatelským účtem ověřením uživatele, který by měl psát soubory, a poté je zapsat jako tohoto uživatele.

Nyní se snažíte vyřešit tento problém změnou všech souborů WordPress, které mají být vlastněny stejným účtem, který webový server zapisuje soubory. Normálnější přístup je změnit způsob, jakým webový server zapisuje soubory, aby proces PHP mohl být "vlastněn" uživatelským účtem, ve kterém jsou soubory spuštěny.

Obecná odpověď na tuto otázku je "suphp". Tato verze PHP nastavuje uživatele, že proces PHP běží jako stejný uživatel jako vlastník souborů PHP, které běží. To je bezpečnější pro nastavení sdíleného hostování, protože zajišťuje, že proces PHP spuštěný sdíleným webovým serverem běží jako vlastník souborů PHP a nemůže tedy číst ostatní uživatele a podobně.

V Ubuntu se domnívám, že je to obecný způsob, jak to udělat:

Instalovat suppp:

$ Sudo apt-get install libapache2-mod-suphp

Zakázat staré mod_php

$ Sudo a2dismod php5 

Restartujte Apache

$ Sudo /etc/init.d/Apache2 restart

A voila. Nyní, mít vaše WordPress PHP soubory ve vlastnictví Normal vlastník z nich. Žádné speciální triky, žádná změna oprávnění nebo vlastnictví nebo něco podobného. Vzhledem k tomu, že proces PHP bude fungovat jako vlastník těchto souborů, bude schopen je zapsat jako tento vlastník. Adresáře by měly být 755, soubory by měly být 644 (poznámka, suphp nemá rád, když jsou soubory zapisovatelné skupinou, takže 755/644 je správná sada oprávnění).

0
Otto