COM (рд╡рд┐рдВрдбреЛрдЬрд╝ + рдЕрдкрд╛рдЪреЗ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ php рдореЗрдВ рд╡рд░реНрдб рдбреЙрдХреНрдпреВрдореЗрдВрдЯ рдХрдиреНрд╡рд░реНрдЯ рдХрд░реЗрдВ

рд╢реБрдн рджрд┐рди, рд╣реЗрдмреНрд░!
рдореИрдВ рдХрд┐рд╕реА рднреА рдЙрдкрд▓рдмреНрдз рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╢рдмреНрдж рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП COM рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЖрдкрдХреЛ рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝реА рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдореИрдВрдиреЗ рдЦреБрдж рдХрдИ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛, рдмрд╣реБрдд рд╕рд╛рд░реЗ рдордВрдЪреЛрдВ рдкрд░ рдЪрдврд╝рд╛рдИ рдХреА, рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдХреЛрдИ рд░реВрд╕реА рдореИрдиреБрдЕрд▓ рдирд╣реАрдВ рд╣реИред рдореИрдВрдиреЗ рдЕрдкрдиреЗ рд▓рд┐рдП рдФрд░ рдЕрдзрд┐рдХ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдХреЛрдИ рдФрд░ рдХрд╛рдо рдЖрддрд╛ рд╣реИ рддреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛?

рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ IIS рд╣реИ, рддреЛ рдПрдХ рдореМрдХрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА, рд▓реЗрдЦ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ Apache рдХреЗ рддрд╣рдд рдХрд╛рдо рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ

рдкрд╣рд▓реА рдФрд░ рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛ рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рдорд╕реНрддрд┐рд╖реНрдХ рдлрдЯ рдЧрдпрд╛:
Call to undefined method variant::SaveAs()
рдЬрдм рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИред
рдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдЕрдХреНрд╕рд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдХрд┐рд╕реА рд╕рдВрдкрддреНрддрд┐ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдпрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдХрд╛рд░рдг рд╣реЛрддрд╛ рд╣реИ, рд╕рдмрд╕реЗ рдЖрдо -
Fatal error: Uncaught exception 'com_exception'
with message ' Source: Unknown<br/> Description: Unknown'


рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рд╡реИрд╕реЗ рднреА рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
  1. рд╡рд┐рдВрдбреЛрдЬ рд╕рд░реНрд╡рд░ рдХреА рдЬрд░реВрд░рдд рд╣реИ
  2. MsOffice рдкреИрдХреЗрдЬ рдЙрд╕ рдкрд░ рд╕реНрдерд╛рдкрд┐рдд (рдпрд╛ рдкреВрд░реЗ рдкреИрдХреЗрдЬ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ рднрд╛рдЧреЛрдВ)
  3. рд╕рдорд╛рдзрд╛рди COM рдХреЗ рд▓рд┐рдП рд╕реЗрдЯрд┐рдВрдЧ
    1. рдЗрд╕рдХреЗ рдмрд╛рдж рд╕реНрдЯрд╛рд░реНрдЯ-> рдПрдбрдорд┐рдирд┐рд╕реНрдЯреНрд░реЗрдЯрд┐рд╡ рдЯреВрд▓реНрд╕-> рдХрдВрдкреЛрдиреЗрдВрдЯ рд╕рд░реНрд╡рд┐рд╕реЗрдЬ рдкрд░ рдЬрд╛рдПрдВ
    2. рдореЗрдиреВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдВ рдШрдЯрдХ рд╕реЗрд╡рд╛рдПрдБ-> рдХрдВрдкреНрдпреВрдЯрд░-> рдореЗрд░рд╛ рдХрдВрдкреНрдпреВрдЯрд░-> DCOM рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди
    3. рд╕реВрдЪреА рдореЗрдВ рд╣рдо рдЙрди COM рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреА рддрд▓рд╛рд╢ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рдирдХреА рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ (рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рд╡реЗ рд╕рднреА Microsoft рд╢рдмреНрдж рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВ ...)
    4. рд░реБрдЪрд┐ рдХреЗ рдХрд┐рд╕реА рдПрдХ рдкрд░ рд░рд╛рдЗрдЯ-рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ, рдкреНрд░реЙрдкрд░реНрдЯреАрдЬрд╝ рдЪреБрдиреЗрдВ, рдПрдХреНрд╕реЗрд╕ рдЕрдиреБрдорддрд┐рдпрд╛рдБ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд╕рд┐рдХреНрдпреЛрд░рд┐рдЯреА рдЯреИрдм рдкрд░ рдЬрд╛рдПрдБ, рдХрд╕реНрдЯрдорд╛рдЗрдЬрд╝ рдореЗрдВ рдПрдХ рдмрд┐рдВрджреБ рдбрд╛рд▓реЗрдВ рдФрд░ рдПрдбрд┐рдЯ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред
    5. рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реА рд╡рд┐рдВрдбреЛ рдореЗрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдФрд░ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ, рдЬрд┐рд╕рдХреЗ рдкрд╛рд╕ рдЕрдкрд╛рдЪреЗ рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ (рдиреАрдЪреЗ рдлрд╝реАрд▓реНрдб рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд▓реЙрдЧрд┐рди рджрд░реНрдЬ рдХрд░реЗрдВ рдФрд░ рдЪреЗрдХ рдирд╛рдо рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ; рдпрджрд┐ рд╕рдмрдХреБрдЫ рдареАрдХ рд╣реИ, рддреЛ рд╡рд┐рдВрдбреЛрдЬ рдЗрд╕реЗ рдвреВрдВрдв рд▓реЗрдЧрд╛, рдареАрдХ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ)
    6. рд╕реВрдЪреА рдореЗрдВ, рдЬреЛрдбрд╝реЗ рдЧрдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдФрд░ рд░рд┐рдореЛрдЯ рдПрдХреНрд╕реЗрд╕реЗ рдЪреЗрдХрдмреЙрдХреНрд╕ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВред
    7. рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░реЗрдВ (рдареАрдХ 2 рдмрд╛рд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ)
    8. рд╡рд╛рдВрдЫрд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЪрд░рдг 4-7 рджреЛрд╣рд░рд╛рдПрдБред

  4. рдЕрдкрд╛рдЪреЗ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ
    1. COM рдХреЗ рдЕрдзрд┐рдХрд╛рд░ рдПрдХ рд╣реА рд╡рд┐рдВрдбреЛ (рдШрдЯрдХ рд╕реЗрд╡рд╛рдПрдБ) рдореЗрдВ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рд╕реЗрд╡рд╛ рдЕрдиреБрднрд╛рдЧ рдкрд░ рдЬрд╛рдПрдВ, рд╡рд╣рд╛рдВ рдЕрдкрд╛рдЪреЗ рдвреВрдВрдвреЗрдВ, рдЙрд╕ рдкрд░ рд░рд╛рдЗрдЯ-рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ, рдЧреБрдг рдЪреБрдиреЗрдВ, рд▓реЙрдЧ рдСрди рдЯреИрдм рдкрд░ рдЬрд╛рдПрдВ, рдмреНрд░рд╛рдЙрдЬрд╝ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ, рдЙрд╕реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рджрд░реНрдЬ рдХрд░реЗрдВ рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд COM рдореЗрдВ рд╣реИред рдСрдмреНрдЬреЗрдХреНрдЯ, рдареАрдХ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЦрд╛рддреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рд╕рд╡рд░реНрдб рджрд░реНрдЬ рдХрд░реЗрдВ, рддрд╛рдХрд┐ рдЕрдкрд╛рдЪреЗ рдХреНрд▓рд┐рдХ рдареАрдХ рд╢реБрд░реВ рдХрд░ рд╕рдХреЗ
    2. рд╣рдо рдЕрдкрд╛рдЪреЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдЕрдЧрд░ рд╕рдм рдХреБрдЫ рд╕рд╣реА рд╣реИ, рддреЛ рдкреБрдирд░рд╛рд░рдВрдн рд╕рдлрд▓ рд╣реЛрдЧрд╛

  5. Php.ini рд╕реЗрдЯрдЕрдк
    1. Php.ini рдЦреЛрд▓реЗрдВ
    2. рд╣рдо рдЕрдиреБрднрд╛рдЧ рдХреЛ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ [COM]
    3. рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рд░рджреНрдж рдХрд░реЗрдВ:
        com.allow_dcom = true com.autoregister_typelib = true com.autoregister_casesensitive = false com.autoregister_verbose = true 


      рд╣рдо рдбрд╛рдпрдиреЗрдорд┐рдХ рдПрдХреНрд╕рдЯреЗрдВрд╢рдиреНрд╕ рд╕реЗрдХреНрд╢рди рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ
      рд▓рд╛рдЗрди рдЬреЛрдбрд╝реЗрдВ:
        extension=php com_dotnet.dll 


      рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ
    4. рдорд╣рддреНрд╡рдкреВрд░реНрдг: COM рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдкрд░ рдЕрдзрд┐рдХрд╛рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рд╢рдмреНрдж рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдХрдо рд╕реЗ рдХрдо рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рдЕрдиреБрдорддрд┐рдпрд╛рдВ рдирд╣реАрдВ рдмрджрд▓реА рд╣реИрдВ)
    5. рд▓рд╛рдн


    PS рдЕрд╕рдлрд▓ рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ Word рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдорд╛рд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордд рднреВрд▓рдирд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓рддрд╛ рд╣реИ рдФрд░ рд▓рдЯрдХрд╛ рджреЗрддрд╛ рд╣реИред

    рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ COM рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣:

     com_load_typelib('Word.Application'); $name = 'test.docx'; $path = dirname(__FILE__) . "\\tmp\\". $name ; $word = new COM("word.application") or die ("  COM "); $word->Documents->Open( $path ); mkdir(dirname(__FILE__) . "\\tmp\\{$name}"); $folder = dirname(__FILE__) . "\\tmp\\{$name}"; $word->ActiveDocument->SaveAs( $folder . "\\{$name}.html", 8); $word->Quit(); $word = null; 

Source: https://habr.com/ru/post/In162473/


All Articles