2010-02-17 4 views
1

Je cours sur PHP.
Et dans mon local, je travaille sur l'environnement Windows, donc il était facile de se connecter à la base de données MS Access en utilisant le connecteur ODBC.connexion à la base de données en php avec MS Access sur l'hébergement Linux

Mais sur mon environnement de serveur en direct il y a Linux donc il y a un problème concernant la connexion DB.

Alors, quelles sont les étapes pour se connecter à MS Access DB dans un environnement Linux en utilisant php.

Merci
Avinash

+1

Vous ne répondez pas à la question, mais êtes-vous vraiment sûr de vouloir utiliser MS Access dans un environnement de serveur en direct? L'accès est terrible quand il s'agit de mise à l'échelle et ne fonctionnera pas bien (j'irais même jusqu'à dire) avec les utilisateurs simultanés. – beny23

+0

je n'ai rien comme utilisateur et tout ça. Mon utilisateur ne souhaite pas implémenter l'interface pour ajouter un enregistrement dans DB. Donc, pour cela, ils veulent qu'ils entrent des données dans la base de données d'accès et obtenir les détails mis à jour sur le site. – Avinash

+0

Votre utilisateur ne comprend pas les problèmes impliqués. En supposant que vous avez décrit la situation dans son intégralité, cela ne peut pas être fait comme ils le souhaitent. Vous devez utiliser autre chose que Jet/ACE comme base de données. Selon l'environnement, ils pourraient toujours le mettre à jour avec Access, mais les tables ne seraient plus dans Access/Jet/ACE. –

Répondre

0

Si vous êtes sur l'hébergement partagé le serveur Linux manquera très probablement le soutien ODBC. Vous ferez mieux d'utiliser SQLite, car cela fonctionnera sur Linux et Windows (et OS X) sans aucun problème majeur en utilisant PHP ...

+0

Et avec SQLLite, qu'utilisent vos utilisateurs Access en tant qu'application frontale? –

+0

Vous pouvez migrer les données à des heures fixes (puisque sa base de données en ligne semble être en lecture seule si je lis ses commentaires) ou connectez votre application Access frontend à SQLite en reliant les tables à l'aide des pilotes SQLite ODBC (qui devront être installés) sur chaque machine client bien sûr). Il en va de même pour MySQL, vous devriez toujours pouvoir utiliser le frontend (enfin, vous devrez peut-être faire de petits changements, par exemple si vous utilisez des fonctions DB spécifiques). – wimvds

3

Ceci ne répond pas directement à votre question, mais c'est une autre façon de résoudre le problème de vouloir utiliser Access pour mettre à jour les données Web:

Vous pouvez transférer votre base de données Access à MySQL sur le serveur en direct (Web), et utiliser Accès comme frontend à cette base de données pour l'utilisateur (retournement essentiellement les rôles du site Web et d'Access):

Vous pouvez vous connecter à la base de données MySQL à partir d'Access via ODBC à l'aide du pilote MySQL Connector, en reliant le t permet d'accéder aux outils "Données externes". De cette façon, vous obtenez un moteur de base de données (plus) sérieux, optimisé pour le Web, mais gardez la capacité de votre utilisateur à manipuler les données avec des outils qui leur sont familiers.

1

La relation entre le serveur Web et le réseau du client n'est pas claire. Si le serveur Linux est sur le LAN local du client et qu'il exécute Samba, vous pouvez certainement stocker la base de données Access/Jet/ACE sur le serveur Linux et les utilisateurs peuvent la modifier dans Access. Vous aurez alors besoin de l'un des émulateurs Jet fonctionnant sur le serveur Linux (pour autant que je sache, il n'y a pas d'émulation de l'ACE disponible pour Linux, donc si leur base de données est au format ACCDB, vous êtes hors de bonne chance, à moins que je ne sois tout simplement dépassé par ce que j'ai entendu à propos des émulateurs). Certains des émulateurs Jet sont en lecture seule, alors soyez prudent avec cela.

Maintenant, je ne recommande pas ce scénario, car Jet/ACE n'est pas conçu pour ce type d'application. Cela fonctionne très bien dans un environnement de bureau/groupe de travail avec un réseau SMB, mais je ne l'utiliserais pas comme back-end d'un site web qui n'était pas en lecture seule, preuve de concept ou très, très faible volume de lecture/écriture. Je ne recommanderais certainement jamais avoir le même MDB servant de backend de site Web et être utilisé simultanément par les utilisateurs d'Access interactifs.

Si ce scénario est correct, vos utilisateurs peuvent toujours travailler avec Access si vous transférez le serveur principal vers une base de données de serveur qui s'exécute sous Linux.J'utilise MySQL tout le temps, et comme je suis un idiot d'Access, je dépend de phpMyAdmin pour mon interface utilisateur pour gérer mes bases de données MySQL. Il devrait être assez facile pour un utilisateur d'Access de comprendre pour se moquer du schéma. En utilisant MyODBC, vous pouvez configurer des tables liées dans Access, et les rapports et les formulaires fonctionneront à peu près de la même manière qu'avec un backend Jet.

Mais je doute fortement que votre client héberge son site web sur un serveur Linux connecté à son réseau local. Il est plus probable que le serveur Linux soit un hébergement Web partagé, auquel cas il n'y aura pas de réseau SMB disponible, donc vous ne pourrez pas avoir une seule base de données Access éditée à la fois par le site Web et par les utilisateurs interactifs. C'EST UNE BONNE CHOSE, car cela serait déconseillé en premier lieu.

Avec partagé vous hébergement peut être autorisé à ouvrir un port à une base de données de serveur (serveur d'hébergement de mon site fournit à la fois MySQL et PostgreSQL et mais permet l'accès à distance uniquement à MySQL et uniquement par le nom d'hôte/adresse IP. C'est ne fonctionnera probablement pas très bien avec un réseau local de bureau.Tout hôte Web qui permet un accès illimité et ouvert à un serveur de base de données à partir de l'Internet sauvage et laineux n'est probablement pas celui que votre client devrait utiliser. Dans ce cas, un VPN pourrait être utilisé, mais dans mon expérience, les hébergeurs facturent un bras et une jambe pour cela (ce qui est déraisonnable, en fait), donc ce n'est généralement pas une bonne option. vous serez en mesure de fournir connexions en temps réel à une base de données de serveur exécutée sur le site Web. Dans ce cas, il vous reste à synchroniser les bases de données d'une manière ou d'une autre. Si le site est un esclave complet de la base de données Access (pas d'édition, d'ajouts ou de suppressions sur le site), cela peut être très simple, car vous pouvez simplement écrire des scripts pour exporter les données vers un fichier ou des fichiers téléchargés. le site Web et ensuite traiter sur le site Web pour remplacer les données existantes.

Si vous avez un scénario multi-maître (mises à jour aux deux emplacements), c'est beaucoup plus compliqué, surtout si les mises à jour doivent aller dans les deux sens. J'ai programmé la fin d'accès exactement de ce scénario, c'est-à-dire, synchroniser une base de données MySQL sur un site Web avec une base de données Access, et ce n'est pas une tâche triviale. Si vous pouvez obtenir MySQL des deux côtés, cela pourrait être un peu plus facile (en supposant que vous puissiez configurer la réplication, ce qui dans un scénario d'hébergement web bas de gamme me semble assez improbable), mais je ne compterais pas là-dessus .

D'après ce que je sais de la situation, votre client doit tout repenser, car il n'y a pratiquement pas d'intégration possible sans beaucoup de solutions de contournement. Une chose à considérer si le site n'est pas public mais pour supporter les utilisateurs distants est qu'Access 2010 va ajouter un support incroyable pour l'intégration avec Sharepoint Server 2010 qui permettra de publier une base de données Access sur un Sharepoint Server et de l'exécuter dans le navigateur Web. D'un autre côté, si les circonstances sont limitées aux utilisateurs distants, l'application Access pourrait être exécutée sur un serveur Terminal Server et épargner à tout le monde beaucoup de problèmes.

Questions connexes