Maison > développement back-end > Problème PHP > Que dois-je faire si PHP ne peut pas appeler le composant COM ?

Que dois-je faire si PHP ne peut pas appeler le composant COM ?

藏色散人
Libérer: 2023-03-17 10:50:01
original
2286 Les gens l'ont consulté

Solution au problème selon lequel php ne peut pas appeler le composant com : 1. Confirmez la version de php et les outils système requis ; 2. Configurez php.ini et activez "com.allow_dcom = true" ; 3. Activez la fonction com de php ou vérifiez que "php_com_dotnet. dll" est chargé avec succès.

Que dois-je faire si PHP ne peut pas appeler le composant COM ?

L'environnement d'exploitation de ce tutoriel : système Windows 7, PHP version 8.1, ordinateur Dell G3.

Que dois-je faire si php ne peut pas appeler le composant com ? Enregistrement des pièges des composants COM de référence PHP

Récemment, un "gig job" est apparu dans les éléments de travail. Il est nécessaire d'ajouter une fonction au projet PHP existant, et le projet et le projet de code source nécessaires à l'implémentation de la fonction le sont également. disponible. Ce livre C'est une chose très simple. Bien que j'utilise rarement PHP, ce n'est pas le "facteur limitant" le plus important. Ce qui me donne mal à la tête, c'est que la bibliothèque de fonctions est implémentée à l'aide du framework .NET. Il existe de nombreux ajustements au format des données, ce qui est relativement compliqué. n'est pas un manuel de logique fonctionnelle, difficile à copier en PHP. Par conséquent, référencer directement la bibliothèque dynamique de .NET en php est devenu la clé pour accomplir la « tâche »

De nombreux seniors sur Internet ont enregistré ce problème, mais ils n'ont pas réussi à le copier. Cet article est en train de « vivre des petits boulots ». " , rencontrez et remplissez les enregistrements des fosses

Générer une bibliothèque dynamique de composants COM

Le composant COM (composant COM) est une technologie de développement logiciel développée par Microsoft. Son essence réside dans quelques petits programmes exécutables binaires qui peuvent fournir des services aux applications, aux systèmes d'exploitation et à d'autres composants. En PHP, si vous souhaitez référencer une bibliothèque dynamique tierce, vous devez utiliser la nouvelle méthode COM("Component.class"). Le composant doit être un composant COM

1 Créer un projet de bibliothèque de classes Windows

. Quelle que soit la version de Framework, vous devriez pouvoir trouver le projet de bibliothèque de classes sous l'onglet Windows

De cette façon, il y aura par défaut un fichier PropertiesAssemblyInfo.cs dans le projet, qui enregistre les informations requises pour l'ensemble du projet

2. Le framework cible doit correspondre

créer le projet Vous pouvez sélectionner le framework à ce moment

S'il s'agit d'un ajustement ultérieur, vous pouvez le modifier dans le framework cible dans Propriétés du projet > Application

Remarque que le framework doit être cohérent lors de l'enregistrement ultérieur de la dll

3. Configurer les composants COM Cela peut être vu

Dans le fichier PropertiesAssemblyInfo.cs, modifiez ComVisible comme suit

[assembly: ComVisible(true)]
Copier après la connexion

4 Pour définir la signature et définir le fort. name key

Project Properties> Dans la signature, cochez "Signer l'assembly" et en même temps cliquez ci-dessous Créez un nouveau fichier de clé dans "Sélectionner un fichier de clé de nom fort" puis générez-le. Répertoire binDebug

5. S'il existe une bibliothèque dynamique qui ne peut pas être intégrée

Si la version du Framework du projet est inférieure, ou,

La bibliothèque référencée ne dispose pas des fonctionnalités requises pour l'interopérabilité

En bref, l'interopérabilité intégrée ne peut pas être réalisée. sur la bibliothèque référencée.

Ensuite, la dll dépendante doit également effectuer un enregistrement ultérieur et d'autres opérations

Enregistrer la DLL sur le serveur

Impliqué Lorsqu'il s'agit d'opérations au niveau du système, il existe de nombreux pièges.

1. Confirmez la version de PHP

La version 5.3.22 testée personnellement n'est pas disponible, la version 5.4.5 est disponible, alors essayez d'utiliser la version 5.4 ou supérieure

Maintenant, la version la plus élevée de PHP est la version 8.0, je ne le fais pas. Je ne sais pas si la méthode de fonctionnement est toujours la même

2. Confirmez les outils système requis

Vous avez besoin de deux outils, gacutil et regasm, et les deux doivent correspondre à la version du Framework

C'est-à-dire la dll du généré. Le composant COM est utilisé Quelle version du framework, vous devez également utiliser la version correspondante de l'outil ici

Normalement, le système Windows aura certainement l'outil regasm intégré

Chemin du répertoire Par exemple,

C:\Windows\Microsoft.NET\Framework64\v2.0.50727\RegAsm.exe
Copier après la connexion

If. il est appliqué sur un système 64 bits, puis dans le répertoire Framework64, Sinon, utilisez le répertoire Framework et sélectionnez le numéro de version correspondant au framework Framework, où vous devriez pouvoir trouver le fichier RegAsm.exe. L'outil gacutil se trouve. inclus dans le SDK Windows fourni par Microsoft. S'il n'a pas été installé, vous pouvez cliquer pour le télécharger depuis le site officiel. Après l'installation par défaut, le chemin de l'outil pour les versions inférieures à Frameworkd 4.0,

C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\gacutil.exe
Copier après la connexion

Si vous avez besoin de la version 4.0, le chemin est

c:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\NETFX 4.0 Tools\gacutil.exe
Copier après la connexion

3. Configurez php.ini

et activez com.allow_dcom = true

Assurez-vous qu'il y a php_com_dotnet dans votre répertoire extension_dir

Ouvrez ou ajoutez extension=php_com_dotnet.dll

4. . Cachez et enregistrez la DLL

Prenez le système 64 bits, version 4.0 my.dll comme exemple

Copiez la dll générée dans la première partie dans c :Program FilesMicrosoft SDKsWindowsv7.1BinNETFX 4.0 Tools

Allez dans le répertoire c : Fichiers de programmeMicrosoft SDKsWindowsv7.1BinNETFX 4.0 Tools et exécutez gacutil /i my.dll

Allez dans le répertoire C:WindowsMicrosoft.NETFramework64v4.0.30319 et exécutez regasm my.dll

5. Désenregistrez la DLL

Prenez le système 64 bits, version 4.0 my.dll à titre d'exemple

Allez dans le répertoire C:WindowsMicrosoft.NETFramework64v4.0.30319 et exécutez regasm my.dll /unregister

Allez dans le répertoire c:Program FilesMicrosoft SDKsWindowsv7.1BinNETFX 4.0 Exécutez gacutil /u my

php sous Outils pour appeler le composant COM

Une fois le contenu ci-dessus configuré correctement, vous pouvez l'appeler dans le fichier php. La méthode est la suivante. Si

$comClass = new COM('namespace.className');
$comClass -> methodName();
Copier après la connexion

vous indique qu'il n'y a pas de méthode COM, vous devez en tenir compte. si elle a été activée. la fonction com de php, ou si php_com_dotnet.dll est chargé avec succès

S'il vous indique qu'aucune méthode dll n'est appelée ou que la dll n'est pas enregistrée, vous devez déterminer si le fichier dll a été enregistré avec succès

Apprentissage recommandé : "Tutoriel vidéo PHP"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal