PDA

View Full Version : سوال: مشکلاتی که بعد از انتقال پروژه از ویندوز به لینوکس پیش اومد (حل شد)



DelDard
سه شنبه 28 بهمن 1393, 18:54 عصر
سلام
من سایتم رو روی ویندوز نوشتم اما برای کار فایل htaccess و تست نهایی پروژه رو گذاشتم رو لوکال اوبونتو
ولی چندتا مشکل پیش اومد که ممنون میشم از دوستان راهنمایی کنند
لازم به ذکر که تجربه چندانی از لینوکس ندارم

1- فایل htaccess اصلا اجرا نمیشه انگار چون بود و نبودش فرقی نمیکنه چون مصلا توش زدم ارور 404 رو روی صفحه 404 ریدایرکت کنه ولی نمیکنه و همینطور بقیه دستورات فایل htaccess رو
تو نت سرچ کردم زده بود پرمیژنش رو روی 644 بزارید که گداشتم ولی درست نشد اگه کار دیگه ایی باید بکنم بفرمایید

2- توی اپلود عکس از finfo استفاده کردم ولی تو همین ویندوز هم اجرا نمیشد لذا از فایل php.ini فعالش کردم (extension=php_fileinfo.dll رو کامنش رو برداشت) اما تو لینوکس من دو تا فایل php.ini در /etc/php5/apache2 و /etc/php5/cli پیدا کردم که تو هیچ کدوم شبیه عبارت extension=php_fileinfo.dll وجود نداشت . لطفا بگید چطور باید تابع finfo رو فعال کنم

3- از طریق کد زیر یه بک اپ از عکس هایی که اپ کردم میگرفتم که تو ویندوز درست کار میکرد ولی تو linux کار نمیکنه و جالب اینکه هیچ اروری هم نمیده و حتی اسم فایل zip بک اپ رو برام پرینت میکنه ولی بعد کلیک 404 میده که یعنی چنین فایلی اصلن تولید نشده



if(isset($_POST['imagebackup'])){
require_once ROOT.'/includes/class/ListDirectory.php';
$source_dir = ROOT.'/upload/image/';
$zip_name = md5($date).'image.zip';
$zip_file = ROOT.'/back/'.$zip_name;
$file_list = Scan::listDirectory($source_dir);

$zip = new ZipArchive();
if($zip->open($zip_file, ZIPARCHIVE::CREATE) === true){
foreach ($file_list as $file){
if ($file !== $zip_file){
$zip->addFile($file, substr($file, strlen($source_dir)));
}
}
$zip->close(); $imagemsg = "Images backup saved: <a href='../back/$zip_name'>backup</a> <br>";
}
}


4- برای پاک کردن بک اپ ها از کد زیر استفاده میکنم که تو لینوکس کار نمیکنه



array_map('unlink', glob("../upload/image/*.jpg"));

bagherok
سه شنبه 28 بهمن 1393, 19:12 عصر
خب برای مورد اول ببینید
MOD_REWRITE
فعال هست
اگه نیست

http://www.dev-metal.com/enable-mod_rewrite-ubuntu-14-04-lts/

DelDard
سه شنبه 28 بهمن 1393, 19:34 عصر
خب برای مورد اول ببینید
MOD_REWRITE
فعال هست

اقا تست کردم مشکل htaccess حل شد
ممنون ازتون

دوستان اون 3 تا سوال دیگه رو اگه میدونید بفرمایید. نشکر

Unique
چهارشنبه 29 بهمن 1393, 00:28 صبح
برای مورد ۲ - توی لینوکس dll نداریم ! fileinfo از نسخه 5.3 به صورت پیشفرض نصبه و در نسخه های قدیمی Extension ی مربوط به PECL بود و اینجوری نصب میشد :


pecl install fileinfo

برای مورد ۴ هم آدرس کامل بدین نه Relative ، باید کار کنه.

MMSHFE
چهارشنبه 29 بهمن 1393, 09:15 صبح
1- علاوه بر فعال کردن mod_rewrite باید توی تنظیمات آپاچی Allowoverride رو هم روی All تنظیم کنید.
2- توضیح داده شد.
3- باید مجوز نوشتن رو به اون پوشه ای که میخواین فایل پشتیبان اونجا ساخته بشه، بدین.
4- توضیح دادن ولی اگه بازم کار نکرد ببینید مجوز نوشتن توی پوشه مربوطه رو دارین یا نه.

توی لینوکس نمیتونین فایلی که بهش دسترسی ندارین رو پاک کنین. مثل ویندوز نیست که هرکی از راه رسید هر کاری دلش خواست بتونه با فایلهای شما انجام بده.

DelDard
چهارشنبه 29 بهمن 1393, 17:12 عصر
باتشکر از دوستانی که پاسخ دادند

1-مشکل htacceess کاملا حل شد. فقط برای دوستانی که مثل من تازه کارن مراحلش تو لینکی که دوستمون دادند هست. here (http://www.dev-metal.com/enable-mod_rewrite-ubuntu-14-04-lts/)


2- ممنون جناب unique . البته مشکل من نصب نبودن finfo نیست چون همونطور که فرمودید تو ورژن های جدید نصب هست و مشکل من فعال سازی finfo هست
گویا به طور پیش فرض فعال نیست و مشکل اینجاست که تو فایل های php.ini هم هیچ اثری از finfo نیست
لذا نمیدونم چطور باید فعالش کنم. اگه کسی میدونه لطف کنه بگه


3 & 4 - جناب شهرکی پرمیژن اون دوتا فولدر drwxrwxr-x هست. الان منظورتون از رایت روی owner هست یا group ؟من الان chmod رو 777 بزارم درسته؟

تشکر

Unique
پنج شنبه 30 بهمن 1393, 02:56 صبح
البته مشکل من نصب نبودن finfo نیست چون همونطور که فرمودید تو ورژن های جدید نصب هست و مشکل من فعال سازی finfo هست
گویا به طور پیش فرض فعال نیست و مشکل اینجاست که تو فایل های php.ini هم هیچ اثری از finfo نیست

توی لینوکس نیازی به فعال کردنش ندارین ! شما از کجا میدونید فعال نیست ؟ خطا میگیرین ؟ من الان خیلی راحت کد زیر را چک کردم و جواب میده !


$finfo = finfo_open(FILEINFO_MIME_TYPE);
foreach (glob("*") as $filename) {
echo finfo_file($finfo, $filename) . "<br>";
}
finfo_close($finfo);

MMSHFE
پنج شنبه 30 بهمن 1393, 08:50 صبح
3 & 4 - جناب شهرکی پرمیژن اون دوتا فولدر drwxrwxr-x هست. الان منظورتون از رایت روی owner هست یا group ؟من الان chmod رو 777 بزارم درسته؟

بله درست میشه ولی بهتره اینکار رو انجام ندین چون باعث کاهش امنیت میشه. اون d اولی که هیچی (یعنی دایرکتوری - فولدر - هست). بقیه اش رو سه کارکتر سه کارکتر درنظر بگیرین با این الگو (OGA) یعنی سه تای اول مال Owner هست و سه تای بعدی مال Group و سه تای آخر هم مال Any. یکبار با اسکریپتتون و دستور shell_exec یا exec، دستور whoami رو اجرا کنید و ببینید چه خروجی میگیرین (تا بدونین وب سایتتون رو آپاچی با چه کاربری اجرا میکنه - معمولاً www هست) و بعد اون کاربر رو به گروهی که اکانت خودتون عضوش هست (معمولاً users) اضافه کنید. درمورد Add a user to a group in Ubuntu تحقیق کنید. ضمناً کاربر آپاچی جزو دسته Any محسوب میشه الان چون نه Owner هست و نه عضو گروه users (پس Group هم نیست).

Tarragon
پنج شنبه 30 بهمن 1393, 15:12 عصر
سلام
من معمولا بعد از هرکاری دستورات زیر رو می زنم تا همه دسترسی ها درست بشن.
آقای شهرکی مشکلی پیش میاد 777 بزاریم؟
چون خیلی راحت و دردسر های فوق رو نداره.

sudo chown username:username /var/www -R
sudo chmod 0777 /var/www -R

MMSHFE
پنج شنبه 30 بهمن 1393, 16:07 عصر
بله خیلی راحته ولی بعد فولدر شما مثل ویندوز میشه که هرکی از راه رسید هر کاری بخواد میتونه داخلش انجام بده و همه مجوزهای خوندن و نوشتن و اجراکردن برنامه ها و اسکریپتهای داخلش رو خواهد داشت.

Unique
پنج شنبه 30 بهمن 1393, 16:37 عصر
مالکیت را بدین به کاربر خودتون (کسی که میخواد فایل ها را ویرایش کنه) و گروهی که www-data (کاربری که apachr باهاش دسترسی داره) هم عضوش باشه !
دسترسی هم برای فولدر ها روی 755 و برای فایل ها 644 کافیه.
فولدرهایی که قرار هست apache توش فایل ایجاد کنه و دیگه کسی باهاش کاری نداره 770.

البته مبحث permission ها خیلی نیاز به کرا داره ویل در همین حد کافیه.

DelDard
پنج شنبه 30 بهمن 1393, 23:56 عصر
ممنون از همه دوستان
همه مشکلات حل شد. مشکل نه تو کد بود نه finfo غیر فعال بود, فقط به خاطر پرمیژن ها اجرا نمیشد
باز هم ممنون