تجميع وتثبيت وحدات PHP المخصصة في ServBay
يعد ServBay بيئة تطوير ويب محلية قوية تدعم نظامي macOS وWindows، وهو يوفر مجموعة واسعة من الحزم البرمجية لتلبية احتياجات مطوري الويب العصريين. يشتمل على PHP، Node.js، Python، Go، Java، قواعد البيانات مثل MySQL وPostgreSQL وMongoDB، أنظمة التخزين المؤقت مثل Redis، وكذلك خوادم الويب مثل Caddy وNginx وApache، جميعها بدعم تعدد الإصدارات لكي تتمكن من التبديل بين الأنظمة والتقنيات بما يتناسب مع مشروعك.
على الرغم من أن ServBay يأتي مزودًا بعدد كبير من وحدات PHP الشائعة، قد تحتاج أحيانًا—في حالات تطوير خاصة—لترجمة وتجميع وتثبيت وحدات إضافية لتوسيع قدرة PHP أو دمجه مع خدمات خارجية معينة.
يقدم هذا الدليل خطوة بخطوة كيفية تجميع وتثبيت وحدات PHP مخصصة في بيئة ServBay، مع شرح مفصل عبر تجربة وحدات شائعة مثل imagick
لمعالجة الصور وsqlsrv
الخاصة بتكامل Microsoft SQL Server. الهدف هو أن تتمكن من إضافة الوظائف التي تحتاجها إلى بيئة PHP في ServBay بيسر وسلاسة.
المتطلبات الأساسية
تنبيه هام
قبل البدء في ترجمة أي وحدة PHP، يجب عليك تنفيذ تهيئة بيئة البناء وفقًا لدليل ServBay الرسمي، وضبط متغيرات البيئة بشكل صحيح. هذا الأمر أساسي لنجاح عملية تجميع الحزم في ServBay (بما فيها وحدات PHP). تجاهل هذه الخطوة أو تنفيذها بشكل خاطئ سيؤدي غالبًا إلى فشل التجميع وكذلك ظهور رسائل خطأ حول فقدان أوامر أو مكتبات أو رؤوس برمجية.
تقوم سكريبتات تهيئة بيئة البناء في ServBay بضبط متغيرات مهمة مثل PATH
(لمسارات أدوات البناء الداخلية)، وSERVBAY_PACKAGE_FULL_PATH
(مسار جذر الحزمة)، وCPU_NUMBER
(لتحديد عدد عمليات التجميع المتوازية). هذه المتغيرات أساسية ويمكن أن تؤدي إلى فشل التجميع إذا لم تُضبط بشكل صحيح.
لتفاصيل وخطوات تهيئة بيئة البناء في ServBay، اطلع على: إعادة ترجمة الحزم باستخدام ServBay. تأكد تمامًا من فهمك وتنفيذك الدقيق للخطوات المذكورة.
قبل مواصلة عملية التجميع، تحقق أنك أتممت وبنجاح تهيئة بيئة البناء، وأن متغيرات البيئة تعمل ومعرفة في جلسة سطر الأوامر الحالية.
أهمية تحديد إصدار PHP
أحد الميزات الجوهرية في ServBay هي دعمه لتثبيت وتشغيل عدة إصدارات PHP في نفس الجهاز، ما يتيح مرونة فائقة في التبديل بينها حسب متطلبات المشروع. وعند تجميع وحدة PHP، يجب دائمًا استهداف إصدار محدد بوضوح، إذ أن أدوات التجميع مثل phpize
وphp-config
مقترنة ارتباطًا وثيقًا بذلك الإصدار.
phpize
: أداة تهيئة بيئة ترجمة إضافات PHP، تقرأ ملفconfig.m4
وتولد سكريبتconfigure
، وهي الخطوة الافتتاحية المعتادة في تجميع مشاريع C/C++.php-config
: سكريبت يزودك بمعلومات دقيقة حول تهيئة إصدار PHP المحدد: أعلام المترجم، مسارات ملفات الرأس، مسارات المكتبات، مسار تثبيت الإضافات، ...الخ. يُستخدم أثناء تنفيذ سكريبتconfigure
لضمان توافق البنية مع إصدار PHP المستهدف.
لذا، عند استخدام phpize
أو php-config
أو أوامر مرتبطة، يجب تعيين المسار الكامل للأداة للإصدار الذي ترغب في تجميع الوحدة خصيصًا له.
مثال مسارات
إذا كنت ترغب في تجميع وحدة لإصدار PHP 8.3 الموجود في ServBay:
macOS:
phpize
:/Applications/ServBay/package/php/8.3/current/bin/phpize
php-config
:/Applications/ServBay/package/php/8.3/current/bin/php-config
Windows:
phpize
:C:\ServBay\package\php\8.3\current\bin\phpize
php-config
:C:\ServBay\package\php\8.3\current\bin\php-config
اختيار المسارات الصحيحة يضمن أن الوحدة ستكون متوافقة مع البيئة المطلوبة، ويمنع أخطاء وقت الترجمة أو ظهور مشاكل "رموز غير موجودة" أثناء التشغيل.
كل الأمثلة المذكورة في هذا الدليل ترتكز على إصدار PHP 8.3 في ServBay فقط للتوضيح. عند التنفيذ الفعلي، عدّل المسارات بما يتوافق مع إصدار PHP الذي لديك.
تجميع وحدة PHP imagick
تعد وحدة imagick
من أشهر إضافات PHP، إذ توفر وظائف معالجة الصور عبر مكتبة ImageMagick الفعالة. باستخدامها، يمكن تنفيذ عمليات مثل التحجيم والقص وتحويل التنسيقات وإضافة العلامات المائية وتوليف الصور والمزيد. إليك طريقة التجميع والتثبيت على ServBay لإصدار PHP محدد:
الخطوة 1: تثبيت مكتبة ImageMagick الضرورية
وحدة imagick
تعتمد على مكتبة ImageMagick المثبتة بالنظام.
macOS
أنصح باستخدام مدير الحزم Homebrew. إن لم يكن مثبتًا، زر الموقع الرسمي لـ Homebrew وستجد إرشادات التثبيت.
افتح الطرفية ونفذ الأمر التالي:
bash
brew install imagemagick
1
Windows
على Windows، يلزم تثبيت ImageMagick يدويًا، توجه إلى صفحة تنزيل ImageMagick الرسمية، واختر الإصدار المناسب.
تأكد من اختيار نسخة تشمل ملفات التطوير، وكذلك إضافة مسار التثبيت لمتغيرات البيئة.
الخطوة 2: الحصول على مصدر وحدة imagick
حمّل مصدر الوحدة من موقع إضافات PHP (PECL). ادخل إلى صفحة imagick على PECL، اختر أحدث إصدار مستقر وتحصل على رابط التنزيل. في هذا المثال سنستخدم 3.7.0
:
bash
wget https://pecl.php.net/get/imagick-3.7.0.tgz
1
الخطوة 3: فك ضغط المصدر والدخول إلى المجلد
بعد اكتمال التنزيل، نفذ:
bash
tar zxvf imagick-3.7.0.tgz
cd imagick-3.7.0
1
2
2
الخطوة 4: تهيئة بيئة التجميع (باستخدام phpize)
داخل مجلد مصدر الوحدة، نفذ الأداة الصحيحة لإصدار PHP المطلوب (بالمسار الكامل):
bash
${SERVBAY_PACKAGE_FULL_PATH}/php/8.3/current/bin/phpize
1
عند نجاح تنفيذ phpize
سيظهر لك إشعار بأن البيئة جاهزة لترجمة الوحدة.
الخطوة 5: ضبط خيارات التجميع
نفذ السكريبت المولد configure
مع تحديد مسار php-config
للإصدار المطلوب:
bash
./configure --with-php-config=${SERVBAY_PACKAGE_FULL_PATH}/php/8.3/current/bin/php-config
1
سيتحقق السكريبت من وجود مكتبة وترويسات ImageMagick، ويولّد ملف Makefile
النهائي.
الخطوة 6: ترجمة وتثبيت الوحدة
عند نجاح التهيئة، قم بالترجمة والتثبيت:
bash
make -j ${CPU_NUMBER}
make install
1
2
2
سيتم نسخ ملف الوحدة النهائي تلقائيًا إلى مجلد إضافات إصدار PHP على ServBay:
- macOS:
/Applications/ServBay/package/php/8.3/current/lib/php/extensions/no-debug-non-zts-YYYYMMDD/
- Windows:
C:\ServBay\package\php\8.3\current\lib\php\extensions\no-debug-non-zts-YYYYMMDD\
المسار الدقيق قد يتغير حسب الإصدار وخيارات البناء.
الخطوة 7: تفعيل الوحدة
بعد إتمام عملية النسخ، اعمل على تفعيل الإضافة عبر واجهة ServBay الرسومية:
- افتح برنامج ServBay.
- من القائمة الجانبية انتقل إلى
اللغات
>PHP
>PHP 8.3
- في صفحة PHP انتقل للأسفل، ثم في قسم "الخيارات الإضافية" أضف:
extension=imagick.so
- اضغط على
حفظ
وسيُعاد تشغيل PHP آليًا.
الخطوة 8: التحقق من تحميل الوحدة
أعد تشغيل حزمة PHP في ServBay للتأكد من تطبيق الإعداد الجديد. يمكنك التحقق من تحميل الوحدة:
bash
${SERVBAY_PACKAGE_FULL_PATH}/php/8.3/current/bin/php -m | grep imagick
1
النتيجة يجب أن تحتوي على كلمة imagick
في قائمة الوحدات المحملة.
لتحقق أوسع، أنشئ ملف PHP باسم info.php
في مجلد الجذر للموقع يحتوي على الكود <?php phpinfo(); ?>
. المسار الافتراضي:
- macOS:
/Applications/ServBay/www
- Windows:
C:\ServBay\www
افتحه عبر المتصفح على http://localhost/info.php
أو اسم نطاق موقعك في ServBay، وابحث عن "imagick" في صفحة المعلومات.
تجميع وحدات PHP sqlsrv / pdo_sqlsrv
وحدتا sqlsrv
وpdo_sqlsrv
هما امتدادان رسميان لمكتبة PHP خاصان بالاتصال بقاعدة بيانات Microsoft SQL Server، ويعتمدان على برنامج التشغيل ODBC المقدم من مايكروسوفت. لترجمة وتثبيت هذه الوحدات في ServBay اتبع الخطوات التالية:
ملاحظة هامة
يجب قبل البدء تثبيت برنامج تشغيل ODBC الخاص بـ SQL Server وأدواته من مايكروسوفت، وهي غير مضمنة مع ServBay ويلزم تثبيتها يدويًا.
macOS
من الأفضل استخدام Homebrew:
bash
brew tap microsoft/mssql-release https://github.com/Microsoft/homebrew-mssql-release
brew update
HOMEBREW_ACCEPT_EULA=Y brew install msodbcsql18 mssql-tools18
1
2
3
2
3
غالبًا ما يتم التثبيت في /opt/homebrew/
(لأجهزة Apple Silicon) أو /usr/local/
(Intel). تأكد من معرفة هذه المسارات للتجميع.
Windows
حمّل وثبت برنامج ODBC Driver لـ SQL Server من مايكروسوفت، بناءً على نظامك، ودع التأكد من تثبيته وتشغيله بشكل سليم.
معلومة
وحدتا sqlsrv
وpdo_sqlsrv
منفصلتان ويجب تجميع كلاهما على حدة بنفس الطريقة، سنوضح هنا الخطوات باستخدام sqlsrv
فقط كمثال.
الخطوة 1: تثبيت أدوات ODBC
(كما سبق، تأكد من تثبيت كل من msodbcsql18
وmssql-tools18
عبر Homebrew.)
الخطوة 2: الحصول على مصدر إضافة sqlsrv
من PECL، حمل أحدث إصدار لكل من sqlsrv
و pdo_sqlsrv
:
bash
wget https://pecl.php.net/get/sqlsrv-5.12.0.tgz # sqlsrv
wget https://pecl.php.net/get/pdo_sqlsrv-5.12.0.tgz # pdo_sqlsrv
1
2
2
الخطوة 3: فك ضغط المصدر والدخول للمجلد
bash
tar zxvf sqlsrv-5.12.0.tgz
cd sqlsrv-5.12.0
# خطوات pdo_sqlsrv مشابهة
1
2
3
4
2
3
4
الخطوة 4: تهيئة بيئة التجميع (باستخدام phpize)
داخل مجلد المصدر، استخدم الأداة الصحيحة:
bash
${SERVBAY_PACKAGE_FULL_PATH}/php/8.3/current/bin/phpize
1
الخطوة 5: ضبط خيارات التجميع (مع تحديد مسار الاعتماديات)
لتجميع وحدة sqlsrv
، يلزم تمرير مسارات إحالة المكتبات والترويسات لـ Homebrew عبر متغيري البيئة أثناء تنفيذ ./configure
(يفضل ضبط المسارات حسب جهازك):
bash
export LDFLAGS="-L/opt/homebrew/lib ${LDFLAGS}"
export CPPFLAGS="-I/opt/homebrew/opt/unixodbc/include -I/opt/homebrew/include ${CPPFLAGS}"
./configure --with-php-config=${SERVBAY_PACKAGE_FULL_PATH}/php/8.3/current/bin/php-config
1
2
3
2
3
LDFLAGS
: يشير لمسار المكتبات المطلوبة للربط.CPPFLAGS
: يحدد مسارات ترويسات unixODBC وأي ملفات هيدر قد تكون مطلوبة.
الخطوة 6: ترجمة وتثبيت الوحدة
نفذ الأوامر المعتادة:
bash
make -j ${CPU_NUMBER}
make install
1
2
2
سيتم نسخ ملفات إضافات sqlsrv.so
وpdo_sqlsrv.so
* تلقائيًا في المجلد المناسب لإصدار PHP المستهدف.
الخطوة 7: تفعيل الوحدة
قم بتفعيل الإضافة باستخدام واجهة ServBay كما سبق:
- افتح ServBay.
- انتقل إلى
اللغات
>PHP
>PHP 8.3
. - في قسم "الخيارات الإضافية" أضف:
extension=sqlsrv.so
وextension=pdo_sqlsrv.so
. - اضغط على
حفظ
لإعادة تشغيل خدمة PHP.
الخطوة 8: التحقق من تحميل الوحدة
بعد إعادة تشغيل PHP في ServBay، تحقق من التحميل عبر الطرفية:
bash
${SERVBAY_PACKAGE_FULL_PATH}/php/8.3/current/bin/php -m | grep sqlsrv
${SERVBAY_PACKAGE_FULL_PATH}/php/8.3/current/bin/php -m | grep pdo_sqlsrv
1
2
2
يجب أن ترى أسماء الإضافات في الإخراج. كذلك، يمكن التحقق من خلال كود phpinfo()
.
الأسئلة الشائعة (FAQ)
- س: تظهر رسالة خطأ "Cannot find autoconf" أثناء التجميع؟
- ج: غالبًا لم تتم تهيئة بيئة ServBay بشكل سليم. راجع قسم "المتطلبات الأساسية" ونفذ خطوات إعادة الترجمة والتهيئة وتثبيت الأدوات اللازمة مثل autoconf وautomake وlibtool. عادة، تشغيل سكريبت التهيئة وإعادة تشغيل الطرفية يكفي.
- س: فشل تنفيذ
configure
ويشير لفقدان مكتبة أو ترويسة؟- ج: عادة ما يكون السبب غياب اعتماديات من النظام أو عدم تحديد المسارات بشكل صحيح.
- بالنسبة لـ
imagick
: تحقق من تثبيت مكتبة ImageMagick عبر Homebrew:brew install imagemagick
. - بالنسبة لـ
sqlsrv
: تحقق من تثبيت ODBC Driver وmssql-tools18، وضبط متغيري البيئةLDFLAGS
وCPPFLAGS
بمسارات صحيحة. - تأكد أن بيئة ServBay تشمل مسارات Homebrew أو أضفها يدويًا لمتغير PATH إذا لزم الأمر.
- بالنسبة لـ
- ج: عادة ما يكون السبب غياب اعتماديات من النظام أو عدم تحديد المسارات بشكل صحيح.
- س: فشل
make
أوmake install
؟- ج: الأسباب متعددة:
- اعتماديات مفقودة: راجع رسائل الخطأ، وثبت الحزم المطلوبة.
- خيارات خاطئة: تحقق من صحة معاملات
configure
خاصة--with-php-config
. - مشاكل صلاحيات: تعذر تثبيت الملفات بسبب عدم السماح بالكتابة، جرب التنفيذ بصلاحية أعلى إذا دعت الحاجة:
sudo make install
(بحذر). - المصدر معطوب: أعد تحميل المصدر.
- ج: الأسباب متعددة:
- س: ملف الوحدة موجود في المجلد، والتفعيل تم، لكن لا تظهر في
php -m
أو فيphpinfo()
؟- ج:
- السبب المعتاد: لم تتم إعادة تشغيل حزمة PHP بالكامل في ServBay بعد التعديل، تأكد من عمل restart لها وليس فقط خادم ويب أو تحديث الصفحات.
- خطأ في ملف
.ini
: تحقق من صحة السطر (extension=modulename.so
). - مسار مجلد الإضافات غير صحيح: تحقق من إعداد
extension_dir
في ملف php.ini. - تلف الوحدة أو عدم توافق الإصدار: أعد التجميع وتحقق من المطابقة بين إصدار المصدر وإصدار PHP، وافحص ملف سجل الأخطاء (logs).
- ج:
خلاصة
باتباع الخطوات المفصلة في هذا الدليل، ستكون قادرًا على ترجمة وتثبيت وحدات PHP المخصصة كـ imagick
و sqlsrv
ضمن بيئة ServBay المحلية بنجاح. ركز على ما يلي:
- تهيئة بيئة البناء بشكل صحيح وكامل: هي الأساس لكل خطوات التجميع لاحقًا.
- تعريف مسارات الإصدارات الصحيحة من أدوات PHP: خصوصًا
phpize
وphp-config
. - حل كل مشاكل الاعتماديات الخارجية: قم بتثبيت المكتبات والبروتوكولات المطلوبة بحسب الوحدة، وحددها أثناء مرحلة
./configure
. - تفعيل الوحدة بشكل سليم: أضف التفعيل عبر ملفات الإعداد أو الواجهة الرسومية.
- إعادة تشغيل حزمة PHP في ServBay: لتطبيق التغييرات بشكل فعال.
يقدم ServBay بيئة تطويرٍ متكاملة ومرنة تدعم مختلف التقنيات: MySQL, PostgreSQL, MongoDB, Redis, Caddy, Nginx, Apache, Node.js, Python, Go, Java, .NET, Ruby, Rust، وغيرهم. يحتوي كذلك على ميزات فاعلة مثل طلب شهادات SSL حقيقية عبر ACME، إدارة إعدادات CORS، نسخ احتياطي تلقائي للبيانات، استعادة كلمة مرور root لقاعدة البيانات، دعم شهادات ServBay المحلية والعمومية لتطوير HTTPS، والمزيد لتعزيز كفاءة وسهولة سير العمل.
نأمل أن يكون هذا الدليل نقطة انطلاق قوية لتوسيع إمكانيات بيئة ServBay PHP، والتحسين من وتيرة تطوير مشاريعك. في حال واجهتك أي مشكلة إضافية، راجع الوثائق الرسمية لـ ServBay أو استعن بمجتمع الدعم.