PDA

View Full Version : ارتباط PHP و APache در لینوکس با MSSQL



hoseinjany
شنبه 30 آبان 1383, 14:51 عصر
با سلام خدمت کلیة دوستان گرامی
آیا کسی در مورد ارتباط دادن میان PHP روی یک APache که در لینوکس نصب شده با MSSQL کار کرده؟ اگه مثبته لطفاً راهنمایی کنید.
متشکر

oxygenws
شنبه 30 آبان 1383, 18:42 عصر
MSSQL رو کجا نصب کردی؟؟ روی یک ویندوز با یک IP مشخص؟؟؟

shaniaki
شنبه 30 آبان 1383, 21:49 عصر
با عرض ادب:
سیستم کار بدین ترتیب است که شما یک ماژول در فایل پیکره بندی apache اضافه می کنید (یا موقع نصب اضافه می شود) که وظیفه اجرای کدهای php را بر عهده دارد. وقتی دستور اتصال به یک بانک اطلاعاتی در را در php صادر می کنید مشخص می کنید که سرور بانک اطلاعاتی شما روی چه هاستی قرار دارد(مثلا اگر MySQL روی همان هاست نصب شده باشد و سرویس آن هم run شده باشد این هاست می تواند localhost باشد) خود ماژول مربوطه کارهای محوله را انجام می دهد.

یه عشق برنامه نویسی خفن

hoseinjany
یک شنبه 01 آذر 1383, 07:34 صبح
دوستان عزیز
فکر کنم بهتره در مورد این مسئله بیشتر توضیح بدم.
من یک W2K3 Enter دارم که روی اون MSSQL 2000 نصب کرده‌ام. یه RedHat 9 هم دارم که روی اون APache نصب کرده‌ام. (اگر میخواهید بدونید که چرا با DBهای تحت لینوکس کار نمی‌کنم باید بگم که قبلاً این سایت روی IIS همون یکی سرور بوده و حالا قصد دارم کم کم به سمت لینوکس حرکت کنم ولی از اونجایی که اجزای زیادی از سایت من روی MSSQL تعریف شده‌اند، برقراری ارتباط بین APache و MSSQL برای من خیلی ساده‌تر از اننتقال اون حجم داده به DB جدید به نظر میرسه!)
بهر حال، اگر فرض رو بر این بذاریم که ماژول PHP روی APache نصب شده، APache برای ارتباط با MYSQL بطور پیش‌فرض ماژولی دارد که براحتی با نصب آن میتوان با MSSQL ارتباط برقرار کرد. لکن من نتوانستم هیچ ماژولی برای ارتباط آن با MSSQL پیدا بکنم. تنها چیزی که من پیدا کردم، این بود که باید PHP رو دوباره با سوئیچ with-MSSQL-- کامپایل کرده و نصب بکنم. البته برای اینکار باید نرم‌افزار دیگری به نام freetds هم نصب بشه. من این کارها رو انجام دادم ولی به نتیجه ای نرسیدم. شاید درست کامپایل نکردم آخه میدونین، من تجربه زیادی در این زمینه ندارم.
البته فکر میکنم یکی از دلایلی که به نتیجه نرسیدم این بود که یه Source خوب در موردش پیدا نکردم. شما هم میتوانید یه نگاهی به این بیندازید:

http://terra.di.fct.unl.pt/docs/php/ref.mssql.php.htm

از توجه شما سپاسگذارم.

hoseinjany
دوشنبه 02 آذر 1383, 07:19 صبح
آقا تو رو خدا یکی جواب ما رو بده! :گیج:

oxygenws
دوشنبه 02 آذر 1383, 08:37 صبح
تنها چیزی که من پیدا کردم، این بود که باید PHP رو دوباره با سوئیچ with-MSSQL-- کامپایل کرده
دقیقا. در لینوکس باید چنین کنید.


البته برای اینکار باید نرم‌افزار دیگری به نام freetds هم نصب بشه
آیا به خط زیر توجه کردید؟؟ در صورتی که freeTDS رو درست نصب نکرده باشید، PHP هم (با پشتیبانی mssql) درست کامپایل نخواهد شد.

you have to compile PHP with --with-mssql[=DIR], where DIR is the FreeTDS install prefix.

And FreeTDS should be compiled using --enable-msdblib.

یه سوال که جواب ندادید.....
سیستمی که redhat روش نصبه به سیستمی که ویندوز نصبه شبکه شده اند؟؟ یا روی یک سیستم نصب کردید؟؟

ممنون.
موفق باشید، امید

hoseinjany
دوشنبه 02 آذر 1383, 17:19 عصر
سلام دوست عزیز
وقت بخیر

من دقیقاً دستورات زیر رو اجرا کردم:

cd /usr/src/freetds-0.61
./configure --prefix=/usr/share/freetds --sysconfdif=/www/conf --with-tdsver=8.0 --enable-msdblib
make; make install; make clean

cd /usr/src/php-4.3.2
./configure --prefix=/www --with-mysql --with-mssql=/usr/share/freetds --with-apxs=/www/bin/apxs --enable-track-vars --with-config-file-path=/www/conf
make; make install; make clean

زمان اجرا هم هیچ خطایی نداد ولی وقتی که داخل فایل phpinfo رو نگاه می‌کنم هیچ اثری از MSSQL توی اون نیست. اشکال از کجا میتونه باشه؟
آیا ممکنه ایراد از این باشه که میبایست مجدداً APache رو کامپایل می‌کردم؟ ولی آخه خودش ماژول PHP رو میشناسه و ارتباط با MSSQL هم به اون مربوط نمیشه بلکه به PHP مربوط میشه!

نظری در این مورد دارین؟

راستی این رو هم بگم که هر دو تای این سرورها روی یک شبکه قرار دارن.

متشکرم، خدا نگهدار</span>

oxygenws
سه شنبه 03 آذر 1383, 08:40 صبح
سلام،

من حدس می زنم که شما دو نسخه PHP نصب دارید.
می شه عکسی از اولین بخش phpinfo خودتون رو اینجا بذارید؟

ممنون.