نحوه اتصال کتابخانه های اضافی به اسکریپت های PHP. آشنایی با نصب کتابخانه PHP PHP قبلاً از پورت ها نصب شده است

توجه:نسخه تطبیقی ​​سایت فعال می شود که به طور خودکار با اندازه کوچک مرورگر شما سازگار می شود و برخی از جزئیات سایت را برای سهولت در خواندن پنهان می کند. از تماشا کردن لذت ببرید

روز خوبی برای همه خوانندگان وبلاگ سایتدر

در 2 ماه گذشته، کار من برای این شرکت ارتباط نزدیکی با PHP خالص داشته است (استفاده از فریمورک ها و CMS تابو است)، من قبلاً فراموش کرده ام جوملا چیست :) بنابراین بهتر از همیشه می توانم به نوشتن بالاتر ادامه دهم.

امروز در مورد نحوه کار اتصال فایل ها در PHP صحبت خواهیم کرد. همانطور که ممکن است متوجه شده باشید، هر موتور برای یک وب سایت (جوملا، وردپرس، اپن کارت، DLE و همه چیز، همه چیز، همه چیز) از هزاران فایل .php (و نه تنها php) تشکیل شده است و همه آنها با یکدیگر تعامل دارند، که در واقع تشکیل می شود. سایت مکانیزم کار

  • حالا موتورها را فراموش کنید و مثال دیگری را تصور کنید: ما صفحات زیادی در سایت داریم که هر کدام از آنها منو، سربرگ و فوتر سایت یکسان دارند. طبیعتاً ما همان چیزی را از فایلی به پرونده دیگر کپی نمی کنیم، در غیر این صورت معلوم می شود که یک سایت باستانی HTML از دهه 90 است. حداقل، ما همه چیز را به 4 فایل تقسیم می کنیم:
  • index.php – قسمت اصلی صفحه، این فایل تغییر خواهد کرد
  • menu.php – منوی سایت
  • header.php – هدر سایت

footer.php – پاورقی سایت

به عنوان مثال، علاوه بر صفحه اصلی (index.php)، ممکن است صفحاتی با لیستی از محصولات (category.php) و صفحات خود محصولات (product.php) نیز داشته باشیم. اتصال فایل های menu.php، header.php، footer.php به این صفحات راحت خواهد بود. به لطف این رویکرد، اگر یک آیتم منوی جدید اضافه کنیم، آن را فقط یک بار (در menu.php) و نه 3 بار (در index.php، product.php، category.php) اضافه می کنیم. بنابراین این سوال پیش می آید:"چگونه یک فایل را در PHP ضمیمه کنیم؟"

. برای این منظور، 2 دستورالعمل در PHP وجود دارد:

و مشتقات آنها:

توجه شما را به این نکته جلب می کنم که شامل و نیاز توابع نیستند، اینها به اصطلاح ساخت زبان هستند، بنابراین نیازی به پرانتز نیست.

تفاوت شامل و نیاز چیست؟شامل شود ونیاز دارند - این کاملاً یکسان است، تنها با این تفاوت که اگر خطایی وجود داشته باشد (مثلاً اگر فایل مشخص شده وجود نداشته باشد و نتوان آن را گنجاند)، include یک خطایی مانند ایجاد می کند.هشدار

به این معنا که دستورالعمل مورد نیاز رادیکال تر و سختگیرانه تر است. این شما هستید که تصمیم می گیرید به طور کلی از چه چیزی استفاده کنید، آنها همیشه انتخاب یک گزینه سخت گیرانه تر را توصیه می کنند، یعنی نیاز دارند، اما شخصا، تایپ کلمه شامل را خوشایندتر می دانم.

include_once و require_once – همان کاری را انجام دهید که شامل (شامل یک فایل) است، اما در همان زمان مطمئن می شوند که هر فایل بیش از یک بار گنجانده نشده است. استفاده از آنها مخصوصاً زمانی راحت است که چندین نفر روی یک پروژه کار می کنند و باید مطمئن شوید که یک فایل خاص چندین بار اضافه نشده است.

توجه:

شامل_یکبارشامل شود نیاز_یکبار- کندتر کار کنید و بیشتر مصرف کنید RAMاز شامل و نیاز است. این منطقی است و به این دلیل است که آنها باید تمام فایل های متصل شده را به خاطر بسپارند و هر بار که وصل می شوند بررسی کنند که آیا این فایل قبلاً متصل شده است یا خیر.

اجازه دهید به وضوح نحوه عملکرد اتصال فایل ها در PHP را توضیح دهم:

هنگام اتصال فایل‌ها (به عنوان مثال: html، txt، php، xml، و غیره) به یک اسکریپت PHP، محتویات آنها به‌طور احمقانه‌ای به جای include درج می‌شوند. به عبارت دیگر، شامل (و منظور من نیز نیازمند، زیرا آنها یکسان هستند) مانند این است که شما کد (CTRL+C) را از جایی کپی کرده و (CTRL+V) را در یک فایل (مثلاً محصول) قرار داده باشید. php)، و سپس طبق معمول ذخیره و راه اندازی شد: http://your_site.net/product.php

برای تشخیص فایل های اصلی مانند product.php از فایل هایی که به آن وصل می کنیم (menu.php، header.php، footer.php)، فایل های متصل به این شکل تغییر نام داده می شوند: menu.inc.php، header .inc.php، footer.inc.php. به لطف این، وقتی به یک پوشه می رویم، بلافاصله می بینیم که فایل های اصلی کجا هستند و فایل های کمکی کجا هستند.

توجه:

این تکنیک (add inc) فقط برای راحتی بصری استفاده می شود و هیچ تفاوت عملکردی ندارد. اما راحتی بصری نیز بسیار مهم است، بنابراین سعی کنید همیشه ساختار همه چیز را داشته باشید و آن را به همان سبک انجام دهید.

شامل با ارزش بازگشتی

به یاد داشته باشید کلمه کلیدی? بنابراین در PHP یک چیز وحشی به عنوان بازگشت در داخل وجود دارد. من هرگز از این استفاده نکرده ام و هرگز ندیده ام که دیگران از آن استفاده کنند، اما ممکن است، در اینجا برخی از.php:

some.php را وصل کنید:

// رشته را چاپ می کند: PHP ?>

چند واقعیت بیشتر

  • می‌توانید فایل‌ها را در هر جایی از کد PHP، از جمله داخل ;
  • شامل (شامل) در طول اجرای اسکریپت از قبل هیچ اتفاقی در فایل های موجود نمی افتد.
  • فایل شامل همان خطی است که شامل اعلام شده است. یعنی اگر جایی در وسط یک فایل باشد، دامنه جهانی، و اگر در داخل یک تابع باشد، سپس یک فایل محلی. اجازه دهید یک بار دیگر تاکید کنم که include همان است که شما کد را به جای include در یک فایل گرفته اید و کپی کرده اید.

با تشکر از همه برای توجه شما و آخر هفته خوبی داشته باشید!

ایگور گوزی

این یک دستورالعمل دقیق و قطعی برای اقدام با استفاده از اصطلاحات صحیح و گزینه های بهینه نیست. این بیشتر گزارشی از مشکل فعلی است.

وظیفه: پشتیبانی/ماژول GD2 را به PHP اضافه کنید

طبق معمول تمرین را شروع می کنیم کامپیوتر محلیو البته تحت ویندوز کار می کند. به طور دقیق تر ویندوز XP SP2.

در مرحله بعد، اجازه دهید GD2 را در PHP، که از طریق پورت ها پیکربندی شده یا به صورت دستی برای FreeBSD کامپایل شده است، وصل کنیم.

اتصال GD2 به PHP در ویندوز
در توزیع پیدا می کنیم:
\php-4.3.9-Win32.zip\php-4.3.9-Win32\extensions\
کتابخانه php_gd2.dll، i.e. نسخه 2.
و php_gd2.dll را در c:\windows کپی کنید
در فایل c:\windows\php.ini خط extension=php_gd2.dll را پیدا کرده و نظر را حذف می کنیم.

آپاچی را ریبوت کنید. همه
اگر ابتدا کامنت php.ini را ساده لوحانه حذف کنید و فکر کنید که کافی است، پس از راه اندازی مجدد آپاچی، عیب یابی ظاهر می شود:

"بارگیری کتابخانه پویا "./php_gd.dll" ممکن نیست - ماژول مشخص شده یافت نشد."

اتصال GD2 به PHP تحت FreeBSD

PHP قبلاً از پورت ها نصب شده است

به طور دقیق تر، نه تنها PHP، بلکه به طور کلی همه چیز (php، MySQL، Apache، ...) با استفاده از پورت ها پیکربندی شده است.

# cd /usr/ports/lang/php4-extensions # config اضافه کردن یک چک باکس: "پشتیبانی از کتابخانه GD" # نصب را حذف کنید # نصب مجدد را انجام دهید # apachectl -k راه اندازی مجدد نرم و زیبا یا # apachectl راه اندازی مجدد راه اندازی مجدد

PHP به صورت دستی کامپایل می شود

در این مورد، کار مقدماتی برای تهیه JPEG و ZLIB مورد نیاز است

نصب پشتیبانی JPEG

گزینه های ممکن
JPEG از پورت
# cd /usr/ports/graphics/jpeg # make got directory work/jpeg-6b را نصب نکن
JPEG از توزیع

# cd /usr/dist/ # wget ftp://ftp.uu.net/graphics/jpeg/jpegsrc.v6b.tar.gz # gunzip -c jpegsrc.v6b.tar.gz | tar xf - # cd /usr/dist/jpeg-6b # ./configure # make

شما باید پشتیبانی zlib را نصب کنید
از بندر

# cd /usr/ports/archivers/php4-zlib # make کتابخانه‌ها در: /usr/ports/archivers/php4-zlib/work/php-4.4.4/ext/zlib/modules نصب شده‌اند

# cd /usr/dist/php-4.4.4 # ./configure --with-mysql --with-apache=/usr/dist/apache_1.3.37 --enable-memory-limit --with-gd بدون تعیین یک دایرکتوری کتابخانه GD ساخته شده در PHP نصب شده است.

--with-jpeg-dir=/usr/ports/graphics/jpeg/work/jpeg-6b اگر jpeg از پورت باشد یا /usr/dist/jpeg-6b اگر jpeg از توزیع باشد --with-zlib-dir =/ usr/ports/archivers/php4-zlib/work/php-4.4.4/ext/zlib/modules # را نصب و پاکسازی کنید

تست کردنgif.php:png.phpjpg.php:
gd_info.php: کلیدVAL
$val) echo " کلید $



$val"؛ ?>

خطاهای پاس شده

هنگام نصب کتابخانه JPEG، پس از "make" دستور "make install" ساخته شد با این انتظار که فایل های جدید به /usr/local بروند و سپس به طور خودکار در آنجا پیدا شوند.

# ./configure --with-mysql --with-apache=/usr/dist/apache_1.3.37 --enable-memory-limit --with-gd --with-jpeg-dir --with-zlib-dir= /usr/ports/archivers/php4-zlib/work/php-4.4.4/ext/zlib/modules

اما به دلایلی JPEG وصل نشد. هیچ تشخیص منفی و نتیجه ای نداشت.

از روی حماقت، مثل یک بچه گربه نابینا به این طرف و آن طرف چرخیدم و سعی کردم اینطور و آن طرف حرف بزنم.

یا از طریق همه چیز داخلی، سپس از طریق دانلود، سپس از پورت.

تمام این شرمساری با نصب های غیر ضروری همراه بود که منجر به مشکلاتی شد که به دلیل آن خطاهایی در زمان نصب PHP وجود داشت: # ./configure --with-mysql --with-apache=/usr/dist/apache_1.3.37 --enable-memory-limit --with-gd=/usr/local از شما برای استفاده از PHP متشکریم. # make install /usr/dist/php-4.4.4/ext/gd/gd.c:1151: ارجاع تعریف نشده به «gdImageRotate» در حالی که به نظر می رسد فهرست راهنمای GD مشخص شده باشد، اما تشخیص به دایرکتوری داخلی اشاره دارد. # ./configure - -with-mysql --with-apache=/usr/dist/apache_1.3.37 --enable-memory-limit --with-gd=/usr/local --with-jpeg-dir=/. usr/local --with -png-dir=/usr/local --with-zlib-dir=/usr/ports/archivers/php4-zlib/work/php-4.4.4/ext/zlib/modules با تشکر از شما با استفاده از PHP # make install ... /usr/dist/php-4.4.4/ext/gd/gd.c:837: مرجع تعریف نشده به `gdImageColorMatch” /usr/dist/php-4.4.4/ext/gd. /gd.c:1151: ارجاع تعریف نشده به «gdImageRotate» *** کد خطا 1سعی کنید همه ماژول ها را جداگانه آماده کنید و دقیقا به آنها اشاره کنید.

قبل از اینکه شروع به بررسی curl کنیم، می‌خواهم یادآوری کنم که قبلاً زبان PHP را لمس کرده‌ایم، به عنوان مثال، در مطالب مربوط به آپلود در اکسل در PHP یا توانایی احراز هویت در PHP، و اکنون اجازه دهید در مورد توانایی صحبت کنیم. ارسال درخواست به PHP

CURL چیست؟

# ./configure --with-mysql --with-apache=/usr/dist/apache_1.3.37 --enable-memory-limit --with-gd=/usr/local از شما برای استفاده از PHP متشکریم. # make install /usr/dist/php-4.4.4/ext/gd/gd.c:1151: ارجاع تعریف نشده به «gdImageRotate» در حالی که به نظر می رسد فهرست راهنمای GD مشخص شده باشد، اما تشخیص به دایرکتوری داخلی اشاره دارد. # ./configure - -with-mysql --with-apache=/usr/dist/apache_1.3.37 --enable-memory-limit --with-gd=/usr/local --with-jpeg-dir=/. usr/local --with -png-dir=/usr/local --with-zlib-dir=/usr/ports/archivers/php4-zlib/work/php-4.4.4/ext/zlib/modules با تشکر از شما با استفاده از PHP # make install ... /usr/dist/php-4.4.4/ext/gd/gd.c:837: مرجع تعریف نشده به `gdImageColorMatch” /usr/dist/php-4.4.4/ext/gd. /gd.c:1151: ارجاع تعریف نشده به «gdImageRotate» *** کد خطا 1کتابخانه ای از توابع PHP است که می توان از آن برای ارسال درخواست هایی مانند HTTP استفاده کرد اسکریپت PHP. CURL از پروتکل هایی مانند HTTP، HTTPS، FTP و غیره پشتیبانی می کند. می‌توانید درخواست‌های HTTP را با استفاده از روش‌های GET، POST و PUT ارسال کنید.

CURL می تواند در مواردی مفید باشد که باید یک اسکریپت از راه دور را فراخوانی کنید و نتیجه را دریافت کنید یا به سادگی کد HTML صفحه فراخوانی شده را ذخیره کنید، به طور کلی هرکسی می تواند استفاده خود را پیدا کند، اما نکته اینجاست که شما می توانید درخواست ها را در حالی که اسکریپت در حال اجرا است

اتصال کتابخانه CURL در PHP

برای استفاده از کتابخانه CURL، باید آن را مطابق با آن متصل کنید.

توجه داشته باشید! به عنوان مثال، ما از PHP 5.4.39 در ویندوز 7 و از Apache 2.2.22 به عنوان یک وب سرور استفاده خواهیم کرد.

اولین کاری که باید انجام دهید این است که کتابخانه ها را کپی کنید ssleay32.dll، libeay32.dll، libssh2.dllآنها در دایرکتوری با PHP، در دایرکتوری سیستم ویندوز، یعنی در قرار دارند C:\Windows\System32.

سپس کتابخانه php_curl.dll را به php.ini متصل کنید. خط بعدی را لغو نظر کنید

کتابخانه متصل نیست

;extension=php_curl.dll

کتابخانه متصل شد

پسوند=php_curl.dll

تمام است، Apache را مجددا راه اندازی کنید، تابع phpinfo() را فراخوانی کنید و اگر اتصال موفقیت آمیز بود، باید یک بخش curl داشته باشید.


اگر وجود ندارد، پس این فقط به معنی یک چیز است: کتابخانه‌ای که بارگیری نمی‌شود، رایج‌ترین دلیل این است که DLL‌های بالا در دایرکتوری سیستم ویندوز کپی نشده‌اند.

مثال CURL - درخواست یک صفحه راه دور برای نمایش روی صفحه

در این مثال، ما به سادگی از طریق HTTP با استفاده از روش GET یک صفحه راه دور درخواست می کنیم و محتویات آن را روی صفحه نمایش می دهیم.

ما یک دایرکتوری آزمایشی داریم که در آن 2 فایل PHP وجود دارد: test_curl.php و test.php، که test_curl.php اسکریپتی است که در آن از curl استفاده خواهیم کرد، و test.php اسکریپت راه دوری است که ما فراخوانی خواهیم کرد. من کد را با جزئیات کامنت کردم.

کد test_curl.php

کد test.php

سرفصل 1"؛ شکست؛ مورد 2: اکو "<Н2>سرفصل 2"؛ شکست؛ مورد 3: اکو "<Н3>سرفصل 3"؛ شکست؛ )) ?>

در نتیجه، اگر test_curl.php را اجرا کنید، پیام "هدینگ 1" را روی صفحه خواهید دید، می توانید با ارسال پارامترهای id آزمایش کنید ( در این مورد 2 یا 3).

مثال CURL - فراخوانی یک اسکریپت راه دور و گرفتن نتیجه

حالا بیایید سعی کنیم اسکریپت را فراخوانی کنیم و نتیجه را بگیریم تا بعداً آن را پردازش کنیم، مثلاً از روش POST استفاده کنیم. بیایید نام فایل ها را یکسان بگذاریم.

کد test_curl.php

کد test.php

و اگر test_curl.php را اجرا کنیم، 111 روی صفحه نمایش داده می شود، i.e. 1.11 در نتیجه دسترسی به یک اسکریپت از راه دور، ضرب در 100 به دست آمده است.

حالا بیایید در مورد توابع و ثابت های آنها صحبت کنیم.

توابع و ثابت های متداول CURL

  • curl_init - یک جلسه را راه اندازی می کند.
  • curl_close - جلسه را می بندد.
  • curl_exec - یک درخواست را اجرا می کند.
  • curl_errno - کد خطا را برمی گرداند.
  • curl_setopt - یک پارامتر برای جلسه تنظیم می کند، به عنوان مثال:
    • CURLOPT_HEADER - مقدار 1 به این معنی است که هدرها باید برگردانده شوند.
    • CURLOPT_INFILESIZE - پارامتر برای تعیین اندازه فایل مورد انتظار.
    • CURLOPT_VERBOSE - مقدار 1 به این معنی است که CURL پیام های دقیق در مورد تمام عملیات انجام شده را نمایش می دهد.
    • CURLOPT_NOPROGRESS - نشانگر پیشرفت عملیات، مقدار 1 را غیرفعال می کند.
    • CURLOPT_NOBODY - اگر به سند نیاز ندارید، بلکه فقط به هدر نیاز دارید، مقدار را روی 1 تنظیم کنید.
    • CURLOPT_UPLOAD - برای آپلود یک فایل در سرور؛
    • CURLOPT_POST - یک درخواست را با استفاده از روش POST اجرا کنید.
    • CURLOPT_FTPLISTONLY - دریافت لیستی از فایل ها در یک فهرست سرورهای FTP، مقدار 1;
    • CURLOPT_PUT - یک درخواست را با استفاده از روش PUT، مقدار 1 اجرا کنید.
    • CURLOPT_RETURNTRANSFER - نتیجه را بدون خروجی به مرورگر، مقدار 1 برگردانید.
    • CURLOPT_TIMEOUT - حداکثر زمان اجرا بر حسب ثانیه.
    • CURLOPT_URL - مشخص کردن آدرس برای تماس.
    • CURLOPT_USERPWD - رشته ای با نام کاربری و رمز عبور به شکل :;
    • CURLOPT_POSTFIELDS - داده های درخواست POST.
    • CURLOPT_REFERER - مقدار هدر HTTP "ارجاع کننده:" را تنظیم می کند.
    • CURLOPT_USERAGENT - مقدار هدر HTTP "User-Agent:" را تنظیم می کند.
    • CURLOPT_COOKIE - محتویات سرصفحه "Cookie:" که با درخواست HTTP ارسال می شود.
    • CURLOPT_SSLCERT - نام فایل دارای گواهی در قالب PEM.
    • CURLOPT_SSL_VERIFYPEER - مقدار 0، به منظور غیرفعال کردن تأیید گواهی سرور راه دور (پیش‌فرض 1).
    • CURLOPT_SSLCERTPASSWD - رمز عبور فایل گواهی.
  • curl_getinfo - اطلاعات مربوط به عملیات را برمی‌گرداند، پارامتر دوم می‌تواند ثابت باشد تا نشان دهد دقیقاً چه چیزی باید نشان داده شود، به عنوان مثال:
    • CURLINFO_EFFECTIVE_URL - آخرین URL استفاده شده.
    • CURLINFO_HTTP_CODE - آخرین کد HTTP دریافتی؛
    • CURLINFO_FILETIME - تاریخ اصلاح سند بارگیری شده.
    • CURLINFO_TOTAL_TIME - زمان اجرای عملیات بر حسب ثانیه.
    • CURLINFO_NAMELOOKUP_TIME — زمان تفکیک نام سرور در ثانیه.
    • CURLINFO_CONNECT_TIME - زمان صرف شده برای ایجاد یک اتصال، در ثانیه.
    • CURLINFO_PRETRANSFER_TIME - زمان سپری شده از شروع عملیات تا آمادگی برای انتقال داده واقعی، در ثانیه.
    • CURLINFO_STARTTRANSFER_TIME — زمان سپری شده از شروع عملیات تا انتقال اولین بایت داده، در ثانیه.
    • CURLINFO_REDIRECT_TIME - زمان صرف شده برای تغییر مسیر، در ثانیه.
    • CURLINFO_SIZE_UPLOAD - تعداد بایت ها هنگام آپلود.
    • CURLINFO_SIZE_DOWNLOAD - تعداد بایت ها هنگام دانلود.
    • CURLINFO_SPEED_DOWNLOAD - متوسط ​​سرعت دانلود؛
    • CURLINFO_SPEED_UPLOAD - متوسط ​​سرعت دانلود؛
    • CURLINFO_HEADER_SIZE - اندازه کل همه سرصفحه های دریافتی.
    • CURLINFO_REQUEST_SIZE - اندازه کل تمام درخواست های ارسال شده.
    • CURLINFO_SSL_VERIFYRESULT - نتیجه بررسی گواهی SSL درخواست شده با تنظیم پارامتر CURLOPT_SSL_VERIFYPEER.
    • CURLINFO_CONTENT_LENGTH_DOWNLOAD - اندازه سند دانلود شده، از سربرگ Content-Length خوانده می شود.
    • CURLINFO_CONTENT_LENGTH_UPLOAD - اندازه داده های آپلود شده.
    • CURLINFO_CONTENT_TYPE - محتویات سرصفحه نوع محتوای دریافتی، یا اگر این سرصفحه دریافت نشده باشد، NULL.

شما می توانید در مورد توابع CURL و ثابت های آنها در وب سایت رسمی PHP اطلاعات بیشتری کسب کنید -

یک جفت عینک ...

پی اچ پی فریم ورک داخلی مانند پایتون، جاوا یا دات نت ندارد. راه های مختلفی برای استفاده از کتابخانه ها در PHP وجود دارد.

    آنها را در یک باینری PHP کامپایل کنید. این پیشرفته ترین روش است و معمولاً توصیه نمی شود مگر اینکه نیازهای خاصی داشته باشید.

    آنها را به عنوان نصب کنید ماژول های PHPروی سرور و آنها را در PHP.ini فعال کنید. از دیدگاه یک برنامه نویس PHP، این پسوندها بخشی از PHP هستند - همیشه در دسترس هستند. اضافه کردن و حذف بدون بازسازی خود PHP ساده تر است.

    کد PHP را در جایی روی سرور نصب کنید و () آن را در اسکریپت PHP خود قرار دهید.

    یک کپی از کتابخانه را در پروژه خود ذخیره کنید و آن را در اسکریپت PHP خود قرار دهید.

در سطح پایه، کد یا بخشی از مفسر است (ایستا یا پویا) یا یک کد PHP ساده و قدیمی است که در پروژه شما () نوشته شده است.

برای اهداف شما، من فقط می توانم پیشنهاد کنم که از یک توزیع استاندارد PHP استفاده کنید (یک سیستم عامل لینوکس خوب را انتخاب کنید و از آن PHP استفاده کنید). سپس تقریباً تمام کتابخانه‌هایی که در سطح مترجم نیاز دارید به‌عنوان بسته‌های اضافی در دسترس هستند و پیچیدگی آن به کسانی واگذار می‌شود که هر روز این کار را انجام می‌دهند.

در RedHat/Centos می توانید اجرا کنید:

yum نصب کنید php php-memcached php-gd php-pecl

صفحه تا آنجا که ممکن است بخواهید از تمام کتابخانه های دیگری استفاده کنید، احتمالاً بهتر است از یک چارچوب PHP خوب استفاده کنید که تمام این موارد را برای شما انجام دهد.

چند نمونه:

  • چارچوب Zend
  • کیک پی اچ پی
  • Codeigniter
  • و غیره...

(به هیچ ترتیبی نیست، فقط آنهایی که به ذهنتان می رسد)

به شرطی که از رویکرد استاندارد استفاده از RPM یا موارد مشابه برای مدیریت PHP کامپایل شده و جنبه‌های برنامه افزودنی استفاده کرده باشید، یک فریمورک قوی و خوب به شما کمک می‌کند تا تمامی موارد شما را در بر بگیرد. کد اضافیکتابخانه PHP مورد نیاز شما

نتیجه نهایی چیست: شما به جای تمام زیرساخت هایی که در غیر این صورت باید یاد بگیرید و اختراع کنید، بر ارائه محصول تمرکز کرده اید.

صفحه php.ini با شروع PHP (هر بار برای خط فرمان، یک بار در هر سرور در آپاچی راه اندازی می شود). تنظیمات زیادی را تعریف می کند، ماژول های زیادی را شامل می شود، آن ماژول ها را پیکربندی می کند و غیره.

در واقع، می توانید برخی از تنظیمات را در php.ini با استفاده از تابع ini_set() در PHP لغو کنید. با این حال، این فقط برای برخی از تنظیمات کار می کند. سایرین باید قبل از اجرای اسکریپت نصب شوند.

هنگامی که تحت apache کار می کنید می توانید خطوطی را به .htaccess و اضافه کنید ، که به طور کامل PHP.ini را برای آن دایرکتوری/میزبان مجازی لغو می کند.

(لطفاً نحو من را تصحیح کنید و اگر این یادداشت نادرست است حذف کنید)

نام سرور www.example.com DocumentRoot /home/joe/site/docroot php_value include_path "/home/joe/site/php-code"

صفحه در پاسخ به سوال شماره 6 شما در مورد کتابخانه خودتان و بهترین راهبسته بندی آن، پیشنهاد می کنم ابتدا نیاز به کتابخانه را ارزیابی کنید. و اگر کاری را انجام می دهید، متداول ترین روشی را که مردم انجام می دهند را بیابید. اگر یک کتابخانه ساده است، پس یک فایل php با یک وب سایت خوب کافی است.

صفحه ممکن است کمی پیچیده باشد، اما امیدوارم این شما را در مسیر درست راهنمایی کند.

به طور پیش فرض، پسوند کار با MySQL (کتابخانه php_mysql.dll) به PHP متصل نیست و توابع مربوطه در دسترس نیستند. برای اتصال کتابخانه، باید تغییراتی در فایل پیکربندی php.ini ایجاد کنید و کتابخانه های اضافی را در دایرکتوری c:/windows/system32 کپی کنید.

1. به PHP (Apache) بگویید php.ini در کجا قرار دارد (فقط Apache 2.x)

اگر از آپاچی نسخه 2 یا بالاتر استفاده می کنید، حتماً دستورالعمل PHPIniDir را به فایل پیکربندی آپاچی (httpd.conf) اضافه کنید، که به شما امکان می دهد مکان دقیق فایل php.ini را مشخص کنید. پس از اضافه کردن دستورالعمل، آپاچی را مجددا راه اندازی کنید و مطمئن شوید که راه اندازی موفق بوده است.

PHPIniDir "c:/php"

توجه داشته باشید

لطفاً توجه داشته باشید که مسیر با استفاده از اسلش های جلو / نوشته شده است که برای ویندوز غیرمعمول است که از اسلش های عقب استفاده می کند \\. واقعیت این است که هر دو Apache و PHP در ابتدا برای کار بر روی سیستم‌های یونیکس ساخته شدند، جایی که از اسلش‌های جلو استفاده می‌شود. برای جلوگیری از مشکلات احتمالی دشوار تشخیص، ما به شدت توصیه می کنیم از اسلش های جلو در فرمت یونیکس در فایل های پیکربندی آپاچی و PHP استفاده کنید.

این فرض می کند که فایل پیکربندی php.ini در دایرکتوری c:/php ذخیره می شود. برای اطمینان از اینکه آپاچی فایل پیکربندی php.ini را پیدا کرده است، تابع phpinfo() را اجرا کنید.

خروجی اطلاعات پیکربندی PHP

echo phpinfo();
?>

مقدار ردیف را در جداول بنفش به دست آمده بیابید "مسیر فایل پیکربندی (php.ini)". باید مسیر فایل php.ini مورد استفاده را نشان دهد، از جمله خود فایل. اگر این خط فقط یک دایرکتوری را مشخص کند، به این معنی است که آپاچی نتوانست فایل php.ini را پیدا کند.

C:/php/php.ini // Correct - php.ini پیدا شد و استفاده شد
C:/windows/ // نادرست - php.ini یافت نشد

توجه داشته باشید

آپاچی بیشتر دارد نسخه های قبلیهیچ دستورالعمل PHPIniDir وجود نداشت و در نتیجه خطاهای زیادی به دلیل مکان نادرست فایل php.ini ایجاد شد. برای آپاچی نسخه 1.3، php.ini باید در دایرکتوری سیستم ویندوز قرار داشته باشد، معمولاً: c:/Windows. استفاده از دستورالعمل PHPIniDir در نسخه 2 آپاچی به شما این امکان را می دهد که این مشکل را بطور اساسی حل کنید.

هنگامی که مطمئن شدید که Apache از php.ini درست استفاده می کند، می توانید ویرایش آن را برای فعال کردن پسوند MySQL شروع کنید.

2. دستور extension_dir را در PHP.INI تنظیم کنید

دستورالعمل extension_dir دایرکتوری که کتابخانه ها در آن قرار دارند را مشخص می کند پسوندهای phpاز جمله کتابخانه php_mysql.dll. اگر php را در دایرکتوری c:/php نصب کرده اید، کتابخانه های پسوند معمولاً در زیر شاخه ext (c:/php/ext) قرار دارند. بررسی کنید که آیا این درست است و دستور extension_dir را روی مقدار صحیح تنظیم کنید.

Extension_dir = "c:/php/ext"

3. افزونه را برای کار با MySQL وصل کنید

برای انجام این کار، خط را در php.ini پیدا کنید:

;extension=php_mysql.dll

و علامت نظر را از آن حذف کنید - نقطه ویرگول.

پسوند=php_mysql.dll

4. کتابخانه اضافی libmysql.dll را در c:/windows کپی کنید

اگر PHP را به عنوان یک ماژول به Apache متصل کرده اید، برای اتصال پسوند MySQL باید کتابخانه اضافی libmysql.dll را از دایرکتوری c:/php در دایرکتوری c:/windows/system32 کپی کنید. اگر php به عنوان یک برنامه CGI به Apache متصل است، نیازی به کپی کردن یک کتابخانه اضافی نیست.

5. آپاچی را ریستارت کنید

Apache را مجدداً راه اندازی کنید تا همه تغییرات اعمال شوند.

6. نصب افزونه را بررسی کنید

برای اطمینان از اینکه کتابخانه MySQL با موفقیت به PHP متصل شده است، تابع phpinfo() را اجرا کنید. از طریق "جدول بنفش" نگاه کنید و بخشی به نام MySQL را در آنها بیابید. اگر چنین بخشی وجود داشته باشد، به این معنی است که برنامه افزودنی با موفقیت وصل شده است.

بررسی تعامل PHP با MySQL

1. بررسی کنید که آیا سرور MySQL شما در حال اجرا است.

قبل از شروع تست تعامل PHP با MySQL، مطمئن شوید که سرور MySQL شما در حال اجرا است. این را می توان با باز کردن لیست انجام داد خدمات ویندوز: "شروع" | "کنترل پنل" | "اداره" | "خدمات". سرویسی به نام MySQL را پیدا کنید و مطمئن شوید که در حالت در حال اجرا است (ستون سوم جدول).

راه دوم برای اطمینان از اینکه سرور MySQL در حال اجرا است: دکمه های "Crtl" + "Alt" + "Del" را فشار دهید و در برگه "Processes"، فرآیندی به نام mysqld.exe را پیدا کنید. فرآیندهای زیر نیز می توانند به جای فرآیند mysqld.exe کار کنند: mysqld-nt.exe، mysqld-max-nt.exe، mysqld-debug.exe.

2. اسکریپت تست php را اجرا کنید

$dblocation = "127.0.0.1" ;
$dbname = "تست" ;
$dbuser = "root" ;
$dbpasswd = "" ;

$dbcnx = mysql_connect ($dblocation، $dbuser، $dbpasswd)؛
اگر (! $dbcnx )
{
اکو "" ;
exit();
}
اگر(!

{
اکو "" ;
exit();
}

if(!$ver)
{
اکو "

خطا در درخواست

" ;
exit();
}
اکو
mysql_result($ver, 0);
?>

در صورت موفقیت آمیز بودن تست، شماره نسخه سرور MySQL روی صفحه نمایش داده می شود. در غیر این صورت توضیحات خطاهای رخ داده روی صفحه نمایش داده می شود.

خطا هنگام اتصال افزونه برای کار با MySQL

خطاهایی مانند: فراخوانی تابع تعریف نشده

تمام خطاهای حاوی عبارت "Call to undefined function" نشان دهنده یک پسوند PHP غیر متصل است. اگر چنین خطاهایی هنگام کار با توابع MySQL رخ دهد، به این معنی است که کتابخانه PHP برای کار با MySQL - php_mysql.dll - شامل نمی شود.

نمونه پیام خطا:

خطای مرگبار: فراخوانی تابع نامشخص mysql_connect()

برای رفع این مشکل به ابتدای مقاله مراجعه کنید.

بدون بلوک MySQL در phpinfo()

اگر همه چیز به درستی انجام شده است، اما پسوند برای کار با MySQL وصل نمی شود و حتی بلوک MySQL در خروجی تابع phpinfo() وجود ندارد، نسخه کتابخانه libmysql.dll واقع در c:/windows/ را بررسی کنید. سیستم 32.

  1. اندازه کتابخانه libmysql.dll که در c:/windows/system32 قرار دارد را با اندازه کتابخانه ای به همین نام که با PHP نصب شده است مقایسه کنید. آنها باید برابر باشند.
  2. کتابخانه های libmysql.dll را از طریق دایرکتوری c:/windows و همه زیر شاخه ها پیدا کنید. تمام موارد تکراری یافت شده را حذف کنید و تنها یک کتابخانه مورد نیاز را باقی بگذارید - کتابخانه ای که از دایرکتوری c:/php کپی شده است.

توجه داشته باشید

کتابخانه libmysql.dll با همین نام نیز با سرور MySQL عرضه می شود. با این حال، اینها کتابخانه های متفاوتی هستند و اگر دایرکتوری c:/windows/system32 حاوی کتابخانه MySQL باشد، PHP قادر به اتصال پسوند نخواهد بود. هنگام نصب سرور MySQL، کتابخانه libmysql.dll را می توان به طور خودکار در c:/windows/system32 کپی کرد. وجود یک کتابخانه از نسخه قدیمی PHP در دایرکتوری سیستم نیز می تواند به یک مانع تبدیل شود.

صفحه اسکریپت تست خالی

اسکریپت نشان داده شده در لیست زیر اغلب به عنوان اسکریپتی برای آزمایش تعامل PHP با MySQL در وب سایت ما استفاده می شود. تفاوت آن با اسکریپت مشابه PHP ارائه شده در ابتدای مقاله، نمادهای @ قبل از فراخوانی توابع ()mysql_connect و ()mysql_select_db است. این کاراکترها برای سرکوب خروجی خطا به مرورگر استفاده می شوند. استفاده از آنها در یک وب سایت فعال در اینترنت برای جلوگیری از نمایش اطلاعات محرمانه در مرورگر مفید است، اما هنگام اشکال زدایی اسکریپت ها، ممنوع کردن خروجی خطاها ضروری نیست، زیرا می تواند تشخیص مشکل را دشوار کند.

اسکریپت PHP که تعامل PHP با سرور MySQL را آزمایش می کند

$dblocation = "127.0.0.1" ;
$dbname = "تست" ;
$dbuser = "root" ;
$dbpasswd = "" ;

$dbcnx = @mysql_connect ($dblocation، $dbuser، $dbpasswd)؛
اگر (! $dbcnx )
{
اکو "

متاسفانه سرور mySQL در دسترس نیست

" ;
exit();
}
اگر (!@
mysql_select_db ($dbname، $dbcnx))
{
اکو "

متاسفانه پایگاه داده در دسترس نیست

"
;
exit();
}
$ver = mysql_query("SELECT VERSION()" );
if(!$ver)
{
اکو "

خطا در درخواست

"
;
exit();
}
اکو
mysql_result($ver, 0);
?>

اگر در نتیجه اجرای این اسکریپت، یک صفحه خالی نمایش داده شود، به عنوان یک قاعده، به این معنی است که کتابخانه php_mysql.dll به PHP متصل نیست. برای تشخیص دقیق تر مشکل، دنباله اقدامات زیر را انجام دهید.

  1. مطمئن شوید که سایر اسکریپت های PHP که از پایگاه داده MySQL استفاده نمی کنند در حال اجرا هستند.
  2. قبل از فراخوانی توابع mysql_connect و mysql_select که برای سرکوب خروجی خطا به مرورگر استفاده می شود، علامت @ را حذف کنید. پس از این، اطلاعات کامل تری در مورد خطاها در مرورگر نمایش داده می شود که به حل مشکل کمک می کند.

خطا: نمی توان به سرور MySQL در "127.0.0.1" (10061) متصل شد

اگر هنگام اجرای اسکریپت تست PHP، خطای مشابه زیر نمایش داده شود:


نمی توان به سرور MySQL در "127.0.0.1" (10061) متصل شد
در C:\www\panel\htdocs\test.php در خط 7

این نشان می دهد که سرور پایگاه داده MySQL در حال اجرا نیست. تشخیص دقیق تر این مشکل در بالا در پاراگراف 1 زیربخش "بررسی تعامل PHP با MySQL" ارائه شده است.

خطا: دسترسی برای کاربر "root"@"localhost" رد شد (با استفاده از رمز عبور: بله)

داشتن خطای زیر:

هشدار: mysql_connect():
دسترسی برای کاربر "root"@"localhost" ممنوع شد (با استفاده از رمز عبور: بله)
در C:\www\panel\htdocs\test.php در خط 7

نشان می دهد که می خواهید با رمز عبور نادرست به پایگاه داده MySQL متصل شوید. مقدار متغیر $dbpasswd را در اسکریپت تست بررسی کنید. به طور پیش فرض، سرور MySQL با رمز عبور کاربر root خالی نصب می شود. اگر خودتان یک رمز عبور برای کاربر root تعیین کرده اید، آن را در متغیر $dbpasswd اسکریپت تأیید بنویسید.

می‌توانید هر سؤالی در مورد اتصال به برنامه‌های افزودنی PHP برای کار با آن‌ها در انجمن ما اختصاص داده شده به نصب و پیکربندی کتابخانه‌های Apache، PHP و برنامه‌های افزودنی بپرسید.

شروع کنید