ایگور گوزی

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

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

یک بار دیگر، ما شروع به آموزش روی یک کامپیوتر محلی می کنیم و سپس، البته، تحت ویندوز کار می کنیم. به طور دقیق تر ویندوز XP SP2. سپس می‌توانیم GD2 را از طریق PHP، که از طریق پورت‌ها پیکربندی شده است، فعال کنیم یا به صورت دستی آن را تحت FreeBSD مونتاژ کنیم.

اتصال GD2 به PHP تحت ویندوز

شناخته شده از کیت توزیع:
\php-4.3.9-Win32.zip\php-4.3.9-Win32\extensions\
کتابخانه php_gd2.dll، سپس. نسخه 2.
و php_gd2.dll را در c:\windows کپی کنید
در فایل c:\windows\php.ini پسوند خط=php_gd2.dll را داریم و کامنت را حذف می کنیم.
Revantazhuemo Apache. خودشه.

اگر ابتدا نظر را از php.ini بگیرید و به آنچه کافی است فکر کنید، پس از راه اندازی مجدد Apache، عیب یابی ظاهر می شود:
"بارگیری کتابخانه پویا "./php_gd.dll" ممکن نیست - دستورالعمل های ماژول یافت نشد."

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

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

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

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

مجموعه دستی PHP

کدام نوع نیاز به پردازش پیشرفته JPEG و ZLIB دارد

تنظیم پشتیبانی از JPEG

گزینه های ممکن

JPEG از پورت
# سی دی /usr/ports/graphics/jpeg # حذف پوشه کاری/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 نصب شده‌اند

ما PHP را جمع آوری می کنیم

# 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 # make install && make clean

آزمایش کردن

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 نصب .. . /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 هیچ زیرساخت داخلی داخلی مانند پایتون، جاوا یا نت ندارد. روش های مختلفی برای استفاده از کتابخانه های PHP وجود دارد.

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

    آنها را به عنوان ماژول های PHP روی سرور نصب کنید و آنها را به PHP.ini پیوند دهید. طبق برنامه PHP این افزونه ها و قسمت هایی از PHP از این پس در دسترس هستند. اضافه کردن و حذف بدون نیاز به راه اندازی مجدد PHP آسان تر است.

    کد PHP را در جایی روی سرور نصب کنید و آن را به اسکریپت PHP خود اضافه کنید.

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

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

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

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

yum نصب php php-memcached php-gd php-pecl

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

باخت های اکشن:

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

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

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

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

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

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

هنگامی که تحت آپاچی کار می کنید، می توانید ردیف هایی را به دستورالعمل .htaccess اضافه کنید من به طور کامل PHP.ini را به دایرکتوری/میزبان مجازی شما اختصاص می دهم.

(مهربان باشید، نحو من را تصحیح کنید و این یادداشت را حذف کنید، اگر درست نیست)

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

در پاسخ به سوال شماره 6 شما در مورد کتابخانه و بهترین راه بسته بندی آن، من شما را تشویق می کنم که فوراً نیاز به کتابخانه را درک کنید. و اگر واقعاً کار می‌کنید، متداول‌ترین روشی که مردم با آن کنار می‌آیند را بیابید. این یک کتابخانه ساده است، تنها چیزی که نیاز دارید یک فایل .php با یک وب سایت خوب است.

استوریکا ممکن است، کمی بی‌احتیاطی، اما من متقاعد شده‌ام که شما فوراً به درستی گفتید.

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

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

CURL چیست؟

حلقه– این یک کتابخانه از توابع PHP است که با آن می توانید به عنوان مثال از یک اسکریپت PHP به HTTP نیرو اضافه کنید. 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.ini شامل کتابخانه php_curl.dll می شود. نظر در مورد ردیف تهاجمی

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

;extension=php_curl.dll

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

پسوند=php_curl.dll

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


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

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

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

ما یک دایرکتوری آزمایشی در دو فایل 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" را روی صفحه می بینید، می توانید پارامترهای شناسه را آزمایش کنید ( در tsomu vipadku 2 یا 3).

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

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

کد test_curl.php

کد test.php

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

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

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

  • curl_init - جلسه را مقدار دهی اولیه می کند.
  • curl_close – بستن جلسه.
  • curl_exec - Vikonuє zap;
  • curl_errno - کد بازنشانی را می چرخاند.
  • curl_setopt - یک پارامتر برای جلسه تنظیم می کند، به عنوان مثال:
    • CURLOPT_HEADER - مقدار 1 به این معنی است که هدرها باید چرخانده شوند.
    • CURLOPT_INFILESIZE - پارامتر برای تعیین اندازه فایل.
    • CURLOPT_VERBOSE - مقدار 1 به این معنی است که CURL گزارشات مربوط به تمام عملیات را نمایش می دهد.
    • CURLOPT_NOPROGRESS - فعال کردن نشانگر پیشرفت برای مقدار عملیات 1.
    • CURLOPT_NOBODY - اگر به سند نیاز ندارید، بلکه فقط به هدر نیاز دارید، مقدار را روی 1 تنظیم کنید.
    • CURLOPT_UPLOAD - برای آپلود یک فایل در سرور؛
    • CURLOPT_POST - Viconati با استفاده از روش POST وارد می شود.
    • CURLOPT_FTPLISTONLY – انتخاب لیستی از فایل ها در فهرست سرور FTP، مقدار 1.
    • CURLOPT_PUT - Viconati با استفاده از روش PUT، مقدار 1 وارد می شود.
    • CURLOPT_RETURNTRANSFER - نتیجه را بدون رفتن به مرورگر بچرخانید، مقدار 1.
    • CURLOPT_TIMEOUT - حداکثر ساعت در ثانیه؛
    • CURLOPT_URL - درج آدرس برای تبادل.
    • CURLOPT_USERPWD - ردیف با نام کاربری و رمز عبور در نمای:;
    • CURLOPT_POSTFIELDS - داده های درخواست POST.
    • CURLOPT_REFERER - مقدار هدر HTTP "Referer:" را تنظیم می کند.
    • 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 مشاهده کنید.

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

با آرزوی موفقیت برای همه خوانندگان وبلاگ سایتبر! برای 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 دریافت کنیم؟". برای این منظور، PHP دارای 2 دستورالعمل است:

و راهپیمایی های آنها:

من احترام شما را به آنهایی که شامل و مستلزم هستند باز می گردانم - اینها کارکردی نیستند، اینها به اصطلاح ساخت و سازهایی هستند که به سلاح نیاز ندارند.

چرا بین شامل و نیاز تفاوت وجود دارد؟

عبارتند ازі نیاز– این کاملاً یکسان است، تنها با یک تفاوت، که در هنگام مهاجرت (مثلاً اگر فایل مشخص شده نمی داند و نمی تواند متصل شود) شامل، مانند مهاجرت هشدارپس از این، سایت به کار خود ادامه می دهد و همانطور که مشاهده می کنید برای حذف کامل سایت از سایت به این نیاز دارید.

بیانیه نیازمند رادیکال و خشن است. چه چیزی بهتر از vikorystuvat - من معتقدم شما، به دلیل بزرگ، توصیه می کنید همیشه گزینه سخت گیرانه تر را انتخاب کنید، به طوری که نیاز است، اما به خصوص کلمه شامل قابل قبول تر است :)

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

اوواگا:

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

اجازه دهید به وضوح توضیح دهم که چگونه گنجاندن فایل در 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 گرفته اید و کپی کرده اید شامل همین است.

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

پس از ارتقاء، پسوند کار با 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 است که vikorist است. از جمله خود فایل. اگر دایرکتوری در این ردیف فهرست نشده باشد، به این معنی است که آپاچی نمی تواند فایل php.ini را پیدا کند.

C:/php/php.ini // صحیح – 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. آپاچی را ریستارت کنید

برای اطمینان از درست بودن همه تغییرات انجام شده، آپاچی را مجددا راه اندازی کنید.

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 = "ریشه";
$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 نمی تواند پسوندها را فعال کند. کتابخانه libmysql.dll می تواند به طور خودکار در c:/windows/system32 کپی شود وقتی سرور MySQL نصب می شود. وجود یک کتابخانه در فهرست سیستم حاوی نسخه قدیمی PHP ممکن است خراب شود.

سمت پاک اسکریپت تأیید

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

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

$dblocation = "127.0.0.1";
$dbname = "تست" ;
$dbuser = "ریشه";
$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. لطفاً مطمئن شوید که به جای استفاده از پایگاه داده MySQL از سایر اسکریپت های PHP استفاده می کنید.
  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 و برنامه‌های افزودنی را بپرسید.