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.
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)]
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
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
Jika anda memerlukan versi 4.0, laluan Ya,
c:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\NETFX 4.0 Tools\gacutil.exe
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 COMSelepas 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('namespace.className'); $comClass -> methodName();
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!