2017-07-18 300 views
1

原諒這裏的表面跛腳。我正在使用共享主機,只能訪問cpanel,主機不願意代表我安裝composer或PHPWord。是否可以通過從github下載ZIP來安裝PHPWord?謝謝沒有作曲家的PHPWord安裝

+0

由於客戶端/工作是共享主機限制嗎?限制自己在第三節的時候聽起來並不好玩。 – castis

+0

@castis主機剛說他們不支持它,客戶已經做了12個月的訂閱。不過,從一開始我並不認爲我需要額外的組件將word轉換爲pdf – Ojchris

回答

3

您可以在本地使用Composer,然後將文件上傳到服務器。

我問起這個位置:Using Composer locally then uploading files through FTP

基本上,如果你不能在服務器上運行作曲,本地使用它,然後將所需的文件複製到服務器。

你應該使用它的原因是因爲它會爲你下載依賴關係,而不必手動配置一些東西。這是作曲家:)

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

謝謝。但任何想法如何獲得zend組件:Zend \ Escaper組件 Zend \ Stdlib組件 Zend \ Validator組件,因爲我沒有使用Zend框架? – Ojchris

+0

這就是爲什麼你應該使用Composer。因爲它會得到你的依賴。 – Andy

+0

是的,我忘了。謝謝 – Ojchris

-1

下載PHpWord ZIP文件從這裏非常多的點:https://github.com/PHPOffice/PHPWord/archive/develop.zip

來源:: https://github.com/PHPOffice/PHPWord

PHPWord需要以下擴展名:

  • PHP 5.3.3+
  • XML分析器擴展
  • 的Zend \逃避者部件
  • 的Zend \ STDLIB部件
  • 的Zend \驗證程序組件
  • zip擴展(可選,用於寫和OOXML ODF)
  • GD擴展(可選,用於增加圖象)
  • XMLWriter的延伸部(可選的,用於寫和OOXML ODF)
  • XSL擴展(可選,用於應用XSL樣式表到模板)
  • DOMPDF庫(可選的,用來寫PDF)

PHPWord庫的基本用法。 https://github.com/PHPOffice/PHPWord

+0

謝謝。但任何想法如何獲得zend組件:Zend \ Escaper組件 Zend \ Stdlib組件 Zend \ Validator組件,因爲我沒有使用Zend框架? – Ojchris

0

是的,我一直這樣做。對於PHPWord,我會從GitHub下載zip文件並將src文件夾的內容移動到名爲「lib \ PhpOffice \ PhpWord」的目錄中。您將需要一個PHP類加載器。我總是使用它來自動加載,只要類是正確命名空間的,看起來就是這種情況。

$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'); 

設置你的$ GLOBALS [ 'CLASS_PATH']到 '的lib' 目錄的位置,一定要使用 '使用' 試圖實例PHPWord之前需要。

希望這會有所幫助!

+0

謝謝你去了一英里。兩件事:走這條路1)任何想法如何獲得Zend組件:Zend \ Escaper組件 Zend \ Stdlib組件 因爲我沒有使用Zend框架,Zend \ Validator組件? 2)我正在使用codeigniter框架,我很感謝您關於如何使用類加載代碼的建議。謝謝 – Ojchris

+0

我不會推薦這個。如果您按照我的答案使用Composer,則無需執行任何操作。它會爲您創建自動加載器。 – Andy

+0

@Ojchris - 聽起來像你有1)想通了。至於2,CI有它自己的類加載器。我記得,它有一個目錄下的應用程序,你安裝自己的庫。我記得Zend的安裝以及我爲我所從事的網站下載的一些附加庫。不幸的是,我現在正在那個位置上空白。我會嘗試窺視我的一箇舊項目並查看該目錄的位置。 – Borgboy