Rumah > pembangunan bahagian belakang > masalah PHP > Apakah yang perlu saya lakukan jika PHP tidak boleh memanggil komponen COM?

Apakah yang perlu saya lakukan jika PHP tidak boleh memanggil komponen COM?

藏色散人
Lepaskan: 2023-03-17 10:50:01
asal
2267 orang telah melayarinya

Penyelesaian kepada masalah yang php tidak boleh memanggil komponen com: 1. Sahkan versi php dan alat sistem yang diperlukan 2. Konfigurasikan php.ini dan dayakan "com.allow_dcom = true"; fungsi php atau Hanya semak sama ada "php_com_dotnet.dll" berjaya dimuatkan.

Apakah yang perlu saya lakukan jika PHP tidak boleh memanggil komponen COM?

Persekitaran pengendalian tutorial ini: sistem Windows 7, PHP versi 8.1, komputer Dell G3.

Apakah yang perlu saya lakukan jika php tidak boleh memanggil komponen com? Rekod perangkap komponen COM rujukan PHP

Baru-baru ini, "pekerjaan ganjil" muncul dalam item kerja Ia adalah perlu untuk menambah fungsi pada projek PHP sedia ada, dan projek serta kod sumber diperlukan melaksanakan fungsi Terdapat juga projek, yang merupakan tugas yang sangat mudah. Walaupun saya jarang menggunakan PHP, ini bukan "faktor pembatas" yang paling penting. Apa yang membuat saya sakit kepala ialah perpustakaan fungsi dilaksanakan menggunakan rangka kerja .NET Terdapat banyak pelarasan pada format data, yang agak rumit bukan Manual logik fungsional, sukar untuk disalin dalam PHP. Oleh itu, merujuk secara langsung perpustakaan dinamik .NET dalam php telah menjadi kunci untuk menyelesaikan "tugas"

Ramai warga emas di Internet telah merekodkan masalah ini, tetapi mereka gagal menyalin labu tersebut. Kerja gig" "Dalam proses itu, saya menemui dan mengisi perangkap rekod

Pustaka dinamik komponen COM yang dijana

Komponen COM (komponen COM) ialah teknologi pembangunan perisian yang dibangunkan oleh Microsoft. Intipatinya ialah beberapa program boleh laku binari kecil yang boleh menyediakan perkhidmatan kepada aplikasi, sistem pengendalian dan komponen lain. Jika anda ingin merujuk perpustakaan dinamik pihak ketiga dalam PHP, anda perlu menggunakan kaedah COM("Component.class") baharu, di mana Komponen mestilah komponen COM

1 projek perpustakaan

Tidak kira versi Framework mana pun, anda sepatutnya dapat mencari projek perpustakaan kelas di bawah tab Windows

Dengan cara ini, akan ada fail PropertiesAssemblyInfo.cs secara lalai dalam projek, yang merekodkan maklumat yang diperlukan untuk set projek

2 Rangka kerja sasaran mesti sepadan

Anda boleh memilih Rangka kerja semasa mencipta projek

Jika ia dilaraskan. kemudian, anda boleh memilih rangka kerja sasaran dalam aplikasi projek> Buat pengubahsuaian

Perhatikan bahawa rangka kerja perlu konsisten semasa mendaftarkan dll

3

Dalam fail PropertiesAssemblyInfo.cs, tetapkan ComVisible seperti berikut Ubah suai

[assembly: ComVisible(true)]
Salin selepas log masuk

4 Untuk menetapkan tandatangan dan tetapkan kekunci nama kuat

Sifat Projek>Tandatangan, tandakan "Tandatangan perhimpunan" dan pilih nama kuat di bawah Cipta fail kunci baharu

dalam "Fail Utama" dan kemudian jana fail dll yang sepadan dalam direktori binDebug

5. Jika terdapat perpustakaan dinamik yang tidak boleh dibenamkan

Jika projek The Framework versi lebih rendah, atau perpustakaan yang dirujuk oleh

kekurangan ciri yang diperlukan untuk saling kendali,

Dalam pendek, kebolehoperasian terbenam tidak boleh dilakukan pada perpustakaan yang dirujuk

Kemudian, dll bergantung , anda juga perlu melakukan pendaftaran seterusnya dan operasi lain

Daftar DLL ke pelayan

Ia melibatkan operasi peringkat sistem, dan terdapat banyak perangkap...

1 Sahkan versi php

Dalam ujian peribadi, versi 5.3.22 tidak tersedia, tetapi versi 5.4. 5 sudah tersedia, jadi cuba gunakan versi 5.4 ke atas

Sekarang versi PHP tertinggi ialah versi 8.0, saya tidak tahu sama ada kaedah operasi masih sama

2 alatan sistem yang diperlukan

Gacutil dan regasm diperlukan, dan kedua-duanya perlu sepadan dengan versi Rangka Kerja

Maksudnya, dll komponen COM yang dijana digunakan Versi mana rangka kerja adakah ia? Anda juga perlu menggunakan versi alat yang sepadan di sini

Biasanya sistem windows pasti akan mempunyai alat regasm terbina dalam

Laluan direktori, contohnya,

C:\Windows\Microsoft.NET\Framework64\v2.0.50727\RegAsm.exe
Salin selepas log masuk

Jika ia digunakan pada sistem 64-bit, pergi ke direktori Framework64, jika tidak gunakan direktori Framework dan pilih nombor versi rangka kerja Framework yang sepadan, di mana anda sepatutnya dapat mencari RegAsm.exe fail

Alat gacutil disediakan oleh Microsoft Ada dalam windows sdk Jika anda belum memasangnya, anda boleh klik untuk memuat turunnya dari laman web rasmi

Selepas pemasangan lalai, fail. laluan alat untuk versi di bawah Frameworkd 4.0,

C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\gacutil.exe
Salin selepas log masuk

Jika anda memerlukan versi 4.0, laluan Ya,

c:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\NETFX 4.0 Tools\gacutil.exe
Salin selepas log masuk

3 Konfigurasikan php.ini

untuk membolehkan com.allow_dcom = true

Pastikan terdapat fail php_com_dotnet.dll dalam direktori extension_dir anda

Dayakan atau tambah extension=php_com_dotnet.dll

4

Ambil sistem 64-bit, versi 4.0 my.dll sebagai contoh

Tukar Salin dll yang dijana dalam Yipa ke direktori c:Program FilesMicrosoft SDKsWindowsv7.1BinNETFX 4.0 Tools

ke direktori c:Program FilesMicrosoft SDKsWindowsv7.1BinNETFX 4.0 Tools dan laksanakan gacutil /i my.dll

Pergi ke direktori C:WindowsMicrosoft.NETFramework64v4.0.30319 dan laksanakan regasm><🎜 my. 5. Nyahdaftar DLL

Ambil sistem 64-bit, versi 4.0 my.dll sebagai contoh

Pergi ke direktori C:WindowsMicrosoft.NETFramework64v4.0.30319 dan jalankan regasm my.dll /unregister

Pergi ke direktori c:Program FilesMicrosoft SDKsWindowsv7.1BinNETFX 4.0 Tools dan laksanakan gacutil /u my

php memanggil komponen COM

Selepas itu kandungan di atas dikonfigurasikan dengan betul, anda boleh memanggilnya dalam fail php Kaedahnya adalah seperti berikut

meminta bahawa tiada kaedah COM, anda perlu mempertimbangkan sama ada Fungsi com php telah. dihidupkan, atau sama ada php_com_dotnet.dll telah berjaya dimuatkan
$comClass = new COM(&#39;namespace.className&#39;);
$comClass -> methodName();
Salin selepas log masuk

Ia menggesa bahawa tiada kaedah dll dipanggil, atau dll tidak didaftarkan, anda perlu mempertimbangkan sama ada fail dll telah berjaya didaftarkan

Kajian yang disyorkan: "Tutorial Video PHP"

Atas ialah kandungan terperinci Apakah yang perlu saya lakukan jika PHP tidak boleh memanggil komponen COM?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan