2017-07-18 12 views
1

Verzeihen Sie die scheinbare Lahmheit hier. Ich arbeite mit einem Shared Hosting mit Onnly Zugriff auf cpanel und Host sind nicht bereit, Composer noch PHPWord in meinem Namen zu installieren. Ist es möglich, PHPWord zu installieren, indem Sie einfach die ZIP-Datei von github herunterladen? DankePHPWord Installation ohne Composer

+0

Ist die Shared Hosting-Beschränkung wegen eines Clients/Arbeit? Sich auf die Laune eines Dritten zu beschränken, klingt nicht nach Spaß. – castis

+0

@castis Host sagte nur, dass sie es nicht unterstützen und Client bereits ein 12-Monats-Abonnement gemacht. Am Anfang dachte ich, dass ich nicht eine zusätzliche Komponente benötigen würde, um Word in pdf – Ojchris

Antwort

3

Sie können Composer lokal verwenden und dann die Dateien auf den Server hochladen.

fragte ich darüber hier: Using Composer locally then uploading files through FTP

Grundsätzlich, wenn Sie nicht Composer auf dem Server ausgeführt werden können, ist es lokal verwenden, dann die notwendigen Dateien auf den Server kopieren.

Der Grund, warum Sie es verwenden sollten, ist, weil es die Abhängigkeiten für Sie herunterlädt, ohne dass Sie eine Menge Dinge manuell konfigurieren müssen. Das ist sehr viel der Punkt des Komponisten :)

composer require phpoffice/phpword 

Using version ^0.13.0 for phpoffice/phpword 

./composer.json has been created 

Loading composer repositories with package information 
Updating dependencies (including require-dev) 

    - Installing pclzip/pclzip (2.8.2) 
    Downloading: 100%   

    - Installing phpoffice/common (v0.2.6) 
    Downloading: 100%   

    - Installing zendframework/zend-stdlib (2.4.13) 
    Downloading: 100%   

    - Installing zendframework/zend-validator (2.4.13) 
    Downloading: 100%   

    - Installing zendframework/zend-escaper (2.4.13) 
    Downloading: 100%   

    - Installing phpoffice/phpword (v0.13.0) 
    Downloading: 100% 
+0

Dankeschön zu konvertieren. Aber keine Idee, wie man die Zend-Komponenten bekommt: Zend \ Escaper-Komponente Zend \ Stdlib-Komponente Zend \ Validator-Komponente, da ich nicht das Zend-Framework verwende? – Ojchris

+0

Deshalb sollten Sie Composer verwenden. Weil es die Abhängigkeiten für Sie bekommen wird. – Andy

+0

ja das habe ich vergessen. Danke – Ojchris

-1

Download The PHpWord Zip-Datei von hier:https://github.com/PHPOffice/PHPWord/archive/develop.zip

Quelle :: https://github.com/PHPOffice/PHPWord

PHPWord erfordert die folgende Erweiterung:

  • PHP 5.3.3+
  • XML Parser Erweiterung
  • Zend \ Escaper Komponente
  • Zend \ Stdlib Komponente
  • Zend \ Validator Komponente
  • Zip Erweiterung (optional, verwendet OOXML und ODF zu schreiben)
  • GD Erweiterung (optional verwendet, um Bilder hinzufügen)
  • XMLWriter Erweiterung (optional, verwendet OOXML und ODF schreiben)
  • XSL-Erweiterung (optional verwendet, um XSL-Stylesheet-Vorlage anwenden)
  • dompdf Bibliothek (optional, verwendete PDF schreiben)

Beispiel Von grundlegender Verwendung von PHPWord Bibliothek.

+0

danke. Aber keine Idee, wie man die Zend-Komponenten bekommt: Zend \ Escaper-Komponente Zend \ Stdlib-Komponente Zend \ Validator-Komponente, da ich nicht das Zend-Framework verwende? – Ojchris

0

Ja, ich mache es die ganze Zeit. Für PHPWord, würde ich die ZIP-Datei von GitHub herunterladen und den Inhalt des src Ordners in ein Verzeichnis mit dem Namen "lib \ PhpOffice \ PhpWord" verschieben. Sie benötigen dann einen PHP-Klassenlader. Ich benutze das immer für das Autoloading, vorausgesetzt, die Klassen sind korrekt Namespaced, was der Fall zu sein scheint.je nach Bedarf

$GLOBALS['class_path'] = array(__DIR__ . '/lib', __DIR__); 

// Set-up class_path superglobal variable using php include_path as basis 
if (!array_key_exists('class_path', $GLOBALS)) { 
    $GLOBALS['class_path'] = array(); 
    foreach (explode(PATH_SEPARATOR, get_include_path()) as $path) { 
     // substitute __DIR__ path for '.' instead 
     if ($path == '.') { 
      array_push($GLOBALS['class_path'], realpath(__DIR__)); 
      continue; 
     } 
     array_push($GLOBALS['class_path'], realpath($path)); 
    } 
} 

if (!function_exists('import')): 
function import($package = '') { 
    if (empty($package)) { 
     trigger_error("Package path must be specified.", E_USER_ERROR); 
    } 
    $package_bits = explode('\\', $package); 
    $package_path = implode(DIRECTORY_SEPARATOR, $package_bits) . '.php'; 
    foreach ($GLOBALS['class_path'] as $path) { 
     $file = $path . DIRECTORY_SEPARATOR . $package_path; 
     if (file_exists($file)) { 
      require_once($file); 
      $entity_name = implode('\\', $package_bits); 
      if (!(class_exists($entity_name, false) || 
       interface_exists($entity_name, false) 
       || trait_exists($entity_name, false))) { 
      $caller = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 1)[0]; 
      trigger_error("Entity '" . $package . "' not found in file '" . $package_path . "' for import called in " . 
        $caller['file'] . " on line " . $caller['line'], E_USER_ERROR); 
      } 
      return; 
     } 
    } 
} 
endif; 

spl_autoload_register('import'); 

Legen Sie Ihre $ GLOBALS [ 'class_path'] auf die Position des Verzeichnisses 'lib' und sicher sein, ' Verwendung' verwenden, bevor PHPWord zu instanziiert versucht.

Hoffe, das hilft!

+0

danke für eine Meile. Zwei Dinge: diese Route gehen 1) irgendeine Idee, wie man die Zend-Komponenten bekommt: Zend \ Escaper-Komponente Zend \ Stdlib-Komponente Zend \ Validator-Komponente, da ich nicht das Zend-Framework verwende? 2) Ich arbeite mit dem codeigniter-Framework, ich schätze Ihren Rat zur Verwendung des Klassenladecodes. Danke – Ojchris

+0

Ich würde das überhaupt nicht empfehlen. Wenn Sie Composer gemäß meiner Antwort verwenden, müssen Sie nichts tun. Es erstellt den Autoloader für Sie. – Andy

+0

@Ojchris - Klingt, als hättest du 1) herausgefunden. Wie für 2, CI hat seinen eigenen Classloader. Soweit ich mich erinnere, hat es ein Verzeichnis unter der App, wo Sie Ihre eigenen Bibliotheken installieren. Ich erinnere mich an Zend installiert sowie einige zusätzliche Bibliotheken, die ich für eine Website heruntergeladen habe ich arbeitete. Leider blende ich gerade an dieser Stelle. Ich werde versuchen, in eines meiner alten Projekte zu schauen und zu sehen, wo dieses Verzeichnis ist. – Borgboy

Verwandte Themen