PDA

View Full Version : سوال: php.info



student91
پنج شنبه 21 اردیبهشت 1391, 18:43 عصر
سلام
اطلاعات کاملی در مورد php.infoو htaccessو php.iniمی خوام.می خوام بدونم از این سه گزینه چه استفاده هایی تو تنظیمات سایت و امنیت اون میشه .
ممنون میشم اگه راهنماییم کنید.

djsaeedkhan
پنج شنبه 21 اردیبهشت 1391, 23:45 عصر
سلام
در مورد php.ini , info باید گفت که اینا چیزی مثل رجیستری ویندوز هستن. یعنی تنظیمات سایت رو مشخص می کنن
شما اگر هاست بخری که می تونی اینا رو تغییر بدی و با توجه به نیازت تغییر بدی. ولی در سایت های هاست رایگان همچین چیزی بصورت عمومی وجود نداره و سایت میاد محدودیت هایی رو براش می ذاره
به عنوان مثال اگر فرم آپلود داری می تونی تنظیم کنی تا 1000مگ رو هم بگیره. ولی در سایت های رایگان روی 2 مگ تنظیمه و نمی تونی هم تغییرش بدی.
سرچ کنی می تونی به این نتایج برسی

armsoftpc
جمعه 22 اردیبهشت 1391, 11:10 صبح
به نام خدا
با سلام
آیا میشه ، تنظیمات php.ini را با فایل های php (منظورم همان توابع php تغییر داد.). اگر پاسختان + است ، لطفا مثال بزنید ، تست شده باشد.(خیلی مهم)
در ضمن من توی ساختار جوملا فایلی با نام php.ini دیدم ، آیا این فایل نیز مانند فایل htaccess (البته با دستورات مربوط به خودش) عمل میکنه، یعنی سرور دستوراتش را پردازش میکنه، اگر نه پس چرا جوملا یه سری تنظیمات توش نوشته!!!

djsaeedkhan
جمعه 22 اردیبهشت 1391, 11:21 صبح
به نام خدا
با سلام
آیا میشه ، تنظیمات php.ini را با فایل های php (منظورم همان توابع php تغییر داد.). اگر پاسختان + است ، لطفا مثال بزنید ، تست شده باشد.(خیلی مهم)
سلام
بله میشه. البته در هاست های رایگان این امکان رو ندارید. اگر سرچ کنید چیزی به نام ini_set رو می تونید پیدا کنید. و همه چیز رو تغییر بدید. فقط تمام تغییرات فقط در همان صفحه انجام میشه و تغییرات در فایل ذخیره نخواهد شد

armsoftpc
جمعه 22 اردیبهشت 1391, 11:24 صبح
به نام خدا
با سلام
ini_set اصلا کار نمیکنه ، می توانید تست کنید.

djsaeedkhan
جمعه 22 اردیبهشت 1391, 11:27 صبح
به نام خدا
در ضمن من توی ساختار جوملا فایلی با نام php.ini دیدم ، آیا این فایل نیز مانند فایل htaccess (البته با دستورات مربوط به خودش) عمل میکنه، یعنی سرور دستوراتش را پردازش میکنه، اگر نه پس چرا جوملا یه سری تنظیمات توش نوشته!!!

سلام
بله شما می تونید همچین فایلی رو بسازید و کنار فایلتون بزارید تا از تنظیماتش استفاده کنید. البته این تنظیمات با تنظیمات داخل فایل Php فرقی نداره

djsaeedkhan
جمعه 22 اردیبهشت 1391, 11:30 صبح
اینم لینک از سایت مرجعش http://php.net/manual/en/function.ini-set.php

armsoftpc
جمعه 22 اردیبهشت 1391, 12:03 عصر
مهم نیست ، مرجعش چی گفته ، مهم اینکه کار نمیکنه!!!

djsaeedkhan
جمعه 22 اردیبهشت 1391, 12:11 عصر
سلام
من تاحالا ازین استفاده کردم. بازم میگم در هاست های رایگان استفاده از این روش جواب نمیده چون محدودش کردن. ولی در هاست های پولی یا لوکال هاست صد در صد جواب میده. 100%

MMSHFE
جمعه 22 اردیبهشت 1391, 20:40 عصر
مهم نیست ، مرجعش چی گفته ، مهم اینکه کار نمیکنه!!!
دوست عزیز، این حرف شما (با عرض معذرت) کمی خودخواهانه و کودکانه هست. قطعاً هاست شما چنین دسترسی خاصی رو برای شما بسته وگرنه این روش 100٪ کار میکنه. بهتره بجای لجبازی، ببینید مشکل از کجاست که این روش برای شما کار نمیکنه وگرنه اگه قرارباشه حرفهای مرجع رسمی تولید PHP رو قبول نکنیم، اونوقت حرف کی قابل قبول خواهد بود؟

armsoftpc
جمعه 22 اردیبهشت 1391, 21:20 عصر
هاستم لوکاله باز هم مشکلیه، (یعنی من اول همه چی روی لوکال امتحان می کنم، بعد میبرم روی سرور اونم از نوع پولیش.)
فایل htaccess هر دستوری که بهش میدم ، بدون مشکل اجرا می کنه ، اما تابع ini_set تقریبا هیچ دستوری رو اجرا نمیکنه ، مثلا برای افزایش حجم آپلود نوع htaccess اش کار میکنه ، اما ini_set نه!
البته با این سخنان شما به نظر میرسه شاید دستوری که وارد میکنم ، غلط باشه، چون من عینا دستور php.ini اصلی رو درش وارد میکنم، حالا برای این که تست کنیم ، میشه لطفا دستوری که شما در ini_set برای این کار (افزایش حجم آپلود) را بزارید.

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

MMSHFE
جمعه 22 اردیبهشت 1391, 21:23 عصر
این کد رو امتحان کنید ببینید چه خطایی دریافت میکنید:


error_reporting(E_ALL);
ini_set('output_handler', 'mb_output_handler');

armsoftpc
جمعه 22 اردیبهشت 1391, 21:44 عصر
هیچ خطایی ، اصلا توی حالت های قبلی هم خطا تولید نمی کرد ، بلکه اصلا اعمال نمیشد.
اگر میشه دستور افزایش حجم آپلود را بذارید.

MMSHFE
جمعه 22 اردیبهشت 1391, 21:54 عصر
ini_set('upload_max_filesize', '4M');
مثال فوق، اندازه آپلود رو روی 4 مگابایت تنظیم میکنه.

armsoftpc
جمعه 22 اردیبهشت 1391, 22:00 عصر
همین بود که میگفتم کار نمیکنه.

MMSHFE
شنبه 23 اردیبهشت 1391, 14:39 عصر
باید دقت کنید که اجرای این دستور در صفحه مقصد فرم فایده ای نداره چون PHP بعد از اینکه فایل آپلود بشه شروع به فعالیت میکنه و اون موقع دیگه برای تعیین حداکثر اندازه فایل دیر شده. بهترین راه استفاده از htaccess. برای تنظیم این مورد هست یا اینکه توی خود فایل فرمتون (نه صفحه مقصدش) با php.ini کار تنظیم کردن حداکثر اندازه مجاز رو انجام بدین. بعلاوه چون فایلها هم با روش post آپلود میشن، باید post_max_size رو هم علاوه بر upload_max_filesize افزایش بدین. در کل این راه رو امتحان کنید:
1- کد زیر رو توی یک فایل با نام php.ini نوشته و در پوشه ریشه سایتتون ذخیره کنید:


memory_limit = 8M
post_max_size = 4M
upload_max_filesize = 4M

2- اگه فایل htaccess. هم دارین، دقیقاً همون کد بالا رو توی اون هم در ابتدای همه کدهاش اضافه کنید.
3- این کد رو هم در ابتدای فایلی که همه جا ضمیمه میشه (مثل config.php) یا خود فایل فرم (نه فایل مقصد فرم) کپی کنید:


ini_set('meemory_limit', '8M');
ini_set('post_max_size', '4M');
ini_set('upload_max_filesize', '4M');

موفق باشید.

MMSHFE
سه شنبه 26 اردیبهشت 1391, 18:49 عصر
دوستان عزیز لطفاً اگه مشکلتون برطرف میشه، تاپیک رو همینطوری رها نکنید و اطلاع بدین تا دیگران هم متوجه بشن و درصورت بروز مشکل مشابه، سریعتر به جواب برسن. موفق باشید.

student91
جمعه 05 خرداد 1391, 15:27 عصر
سلام میشه بگین،چطوری مشخص کنم که به طور مثال حداکثر k فایل دانلود بشه و حداکثر سایز کلی n باشه و اندازه هر کدوم حداکثر mباشه؟

MMSHFE
شنبه 06 خرداد 1391, 12:25 عصر
شما سمت کلاینت نهایتاً میتونید یک محدودیت کلی تحت عنوان MAX_FILE_SIZE بگذارین که حجم مجاز برای هر فایل رو مشخص میکنه. حجم کلی هم که میشه تعداد تگهای input از نوع file که گذاشتین، ضربدر MAX_FILE_SIZE
ازطرفی تعدادشون هم که دست خودتونه (چندتا تگ input از نوع file گذاشتین).
البته باز هم سمت سرور باید اعتبارسنجی لازم رو انجام بدین. مثال:


$count = count($_FILES);
$flag = true;
foreach($_FILES as $file)) {
if($file['error'] != 0 && $file['size'] > 1048576)) {
$flag = false;
}
}
if($flag) {
// process files
}