ব্যতিক্রম হ্যান্ডলারের ত্রুটি। - লারাভেল


118

এটি একটি লারাভেল-ইনস্টল সম্পর্কিত প্রশ্ন। আমার সর্বজনীন-মুখোমুখি ইউনিক্স সার্ভার সেটআপ রয়েছে:

<VirtualHost *:80>
ServerAdmin webmaster@mydomain.org
DocumentRoot "/var/www/mydomain"
ServerName mydomain.org
ServerAlias www.mydomain.org
ErrorLog "/var/log/mydomain.org-error_log"
CustomLog "/var/log/mydomain.org-access_log" common
</VirtualHost>

আমি / var / www / mydomain অর্থাত্ http://mydomain.org/test.php এর বাইরে টেস্ট.এফপি সহ নথিগুলি পরিবেশন করতে পারি :

<?php echo 'test';

ঠিকভাবে কাজ করে.

বাশে, লারাভেলকে সুরকারের মাধ্যমে ইনস্টল করা এবং ফাইলগুলির দিকে তাকানো সহ:

# ls /var/www/mydomain/my-laravel-project

.gitattributes  CONTRIBUTING.md artisan         composer.json   phpunit.xml readme.md       vendor
.gitignore      app             bootstrap       composer.lock   public          server.php

সুতরাং আমি যখন ব্রাউজ করব:

http://mydomain.org/my-laravel-project/public/

কেন আমার আবেদন রিপোর্ট করে:

Error in exception handler. 

ব্রাউজারে - একটি ফাঁকা সাদা পর্দায়? আমি লারাভেল স্প্ল্যাশ স্ক্রিনটি দেখতে আশা করছি।

তদ্ব্যতীত, লগ ফাইলগুলি কোনও কিছুই প্রকাশ করে না।


পিএইচপি সংস্করণ? আপনি কি আপনার সার্ভারগুলির লগ ইন চেক করতে পারেন /var/logএবং কী, যদি তাদের কিছু বলতে হয় তা দেখুন।
জেসন লুইস

3
লারাভেলের ত্রুটি লগ ইন সম্পর্কে কী app/storage/logs? এবং সমস্ত স্টোরেজ ডিরেক্টরি কি লেখা যায়?
জেসন লুইস

1
@ জেসন যেমন আপনি বলেছেন - এটি স্টোরেজ ডিরেক্টরি ছিল। স্টোরেজে একটি chmod -R 757 এবং আমি স্প্ল্যাশ স্ক্রিনটি হিট করতে পারি। +1 এবং ধন্যবাদ
কুকি 13

উত্তর:


246

নিরাপদ বিকল্পটি হ'ল স্টোরেজ ডিরেক্টরিগুলির গোষ্ঠীটিকে আপনার ওয়েব সার্ভার গ্রুপে পরিবর্তন করতে হবে (সাধারণত apacheবা www-data, তবে এটি বিভিন্ন অপারেটিং সিস্টেমের মধ্যে পরিবর্তিত হতে পারে) এবং ডিরেক্টরি হিসাবে অনুমতি হিসাবে রাখা উচিত 775

chgrp -R www-data app/storage

বা সাথে chown

chown -R :www-data app/storage

তারপরে নিশ্চিত হয়ে নিন যে ডিরেক্টরি অনুমতি রয়েছে 775

chmod -R 775 app/storage

থেকে Laravel ওয়েব সাইটে :

ল্যারাভেলকে কনফিগার করার জন্য এক সেট অনুমতিের প্রয়োজন হতে পারে: অ্যাপ্লিকেশন / স্টোরেজের মধ্যে ফোল্ডারগুলির ওয়েব সার্ভারের মাধ্যমে লেখার অ্যাক্সেসের প্রয়োজন।


14
সাধারণত ওয়েব সার্ভারে গ্রুপের মালিককে পরিবর্তন করা এবং আপনার ফাইলগুলিতে "দুনিয়া "কে সম্পূর্ণ অ্যাক্সেস না দেওয়ার পক্ষে নিরাপদ। 775 ডিরেক্টরিগুলির জন্য ডিফল্ট তাই যথেষ্ট হওয়া উচিত। chgrp -R অ্যাপাচি অ্যাপ্লিকেশন / সঞ্চয়স্থান
14

5
ম্যাক-এ, উপরের কমান্ডগুলি কার্যকর হয়নি। যাইহোক, এই আদেশটি করেছে: sudo chown -R _www app/storage(যদি প্রয়োজন হয় তবে আপনার অ্যাপাচি সার্ভারের নাম দিয়ে _www প্রতিস্থাপন করুন)
লিও গ্যালগেলিলোস

4
এবং তারপরে আমাকে গ্রুপটি লেখার অনুমতি দিতে হয়েছিল :chmod -R g+w app/storage
ড্যানিয়েল এএ পেলসেমেকার

ধন্যবাদ, আমি এটি সহায়ক বলে মনে করেছি। তবে, পরে সমস্যা তৈরি করে যখন আপনি 'পিএইচপি কারিগর মাইগ্রেট ...' চালানোর চেষ্টা করছেন - যেমন '/ অ্যাপ্লিকেশন / স্টোরেজ /' ফোল্ডারটি আপনাকে 'অনুমতি অস্বীকার' ত্রুটি দেয় - এবং আপনি মালিককে সমস্ত অনুমতিগুলি স্থির করে চলেছেন 'www-ডেটা', যতক্ষণ না আপনি '/ বুটস্ট্র্যাপ / কম্পাইল.এফপি' অনুমতি ত্রুটি পান। এটিও 'www-ডেটা'র মালিকের কাছে সেট করা বা 0777-এ সেট করা কি ভাল ধারণা?
peedaeaay

3
(y), পরিবর্তনের প্রশংসা করুন! chmod 777 এত বাচ্চাদের শৈশব নষ্ট করেছে :)
এম এ হোসাইন টনু

17

লারাভেল 5.2

chmod -R 777 স্টোরেজ

পুরানো লারাভেল chmod 777 অ্যাপ / স্টোরেজ / *

নোট করুন যদি আপনার নিজের ব্যতীত কোনও ব্যবহারকারীর অ্যাকাউন্ট ছাড়া যুক্তিসঙ্গতভাবে ডেডিকেটেড সার্ভারটি পাওয়া যায় তবে 777 এর চেয়ে অন্য কোনও কিছুর চেয়ে কোনও সুরক্ষা ঝুঁকি থাকা উচিত নয়। দূষিত ব্যবহারকারীর এর সদ্ব্যবহার করার জন্য অন্য কিছু দুর্বলতা থাকতে হবে এবং সেই সময়ে সম্ভবত 77 777 এর অনুমতি সম্ভবত চলবে। তবে আপনি যদি বিশ্বাস করেন না এমন অন্যান্য ব্যবহারকারীদের সাথে যদি আপনি একটি ভাগ করা সার্ভারে থাকেন তবে আপনাকে আরও জটিল অনুমতিগুলি পরীক্ষা করতে হবে বা আপনার হোস্টিং সরবরাহকারী ইতিমধ্যে বিচ্ছিন্নতা সরবরাহ করেছে কিনা তা পরীক্ষা করে দেখার দরকার।

তাদের সত্যিকারের দ্রুত তাড়াতাড়ি ডক্সে রাখা উচিত এবং বিভিন্ন সেটআপের জন্য উদাহরণ সরবরাহ করা উচিত। আরও বেশি ডিরেক্টরি স্বয়ংক্রিয়ভাবে তৈরি হওয়ার পরে আপনাকে প্রথম লোডের পরে এটি আবার চালাতে হবে। ত্রুটি লেখার জন্য আপনার লগগুলি দেখুন।

এছাড়াও আপনার ডকুমেন্টরুটটি / পথ / থেকে / লারাভেল-প্রকল্প / সর্বজনীন হওয়া উচিত


4
সম্মত, বা আরও ভাল আরও একটি
ভার্বোজ

3
তাদের আপনাকে www.domain.com/project/public এ যাওয়ার কথা বলা উচিত নয় কারণ এটি লারাভেল অ্যাপ্লিকেশনটি চালানোর সঠিক উপায় নয়। সর্বজনীন / * এবং আরও কিছুই সরবরাহ করার জন্য আপনার ওয়েব সার্ভারটি সেট আপ করা উচিত, পুরো অ্যাপ্লিকেশনটির একমাত্র প্রবেশদ্বার হিসাবে পাবলিক / ইনডেক্স.এফপি। আপনি আপাচে খুব সহজেই এটি করতে পারেন; আপনি যদি এনজিনেক্স ব্যবহার করছেন তবে সম্ভবত আপনি জানেন যে আপনি কী করছেন। এবং যদি আপনি একটি সস্তা সিপ্যানেল হোস্ট ব্যবহার করেন (আমার সমবেদনা) জনসাধারণের কাছে নির্দেশ করার জন্য ওয়েব রুট সেটআপ করাও সহজ।
বোরফাস্ট

11
গুরুত্ব সহকারে 777 টি পরামর্শ দেওয়া সুরক্ষা নীতিগুলির স্পষ্ট লঙ্ঘন ...
ftrotter

1
আমি জানি এটির এক বছরের পুরনো তবে to 77 হ'ল এটি করার সবচেয়ে খারাপ উপায় এটি @ ফিটোটার বলেছেন সুরক্ষার সমস্ত নিয়মকে ভঙ্গ করে।
জ্যাক গিয়ারসন

2

আমি app/storage/sessionsফোল্ডারের ভিতরে পুরানো সেশনগুলি 775মুছলাম এবং এর app/storageপরে এটি একটি আগুনের মতো কাজ করার অনুমতি দেবে !

chmod -R 775 app/storage

শুভকামনা!


1

ব্যান্ডওয়্যাগনটি দীর্ঘদিন আগে এটি পেরিয়ে গেছে তবে এখনও "ব্যতিক্রম হ্যান্ডলারের ত্রুটি" সম্পর্কে আমার কাছে আরও একটি পরামর্শ রয়েছে।

আমি যখন "পিএইচপি কারিগর" চালাতাম তখন আমার সাথে এটি ঘটেছিল যা আপনার পরিবেশ সাধারণভাবে কাজ করছে কিনা তা যাচাই করার একটি ভাল উপায়।

আমি এটি চালিয়েছি এবং এটি আমাকে ত্রুটিটি দিয়েছে এবং আমি আমার প্রকল্পের মূল ডিরেক্টরিতে কারিগর ফাইল সম্পাদনা না করে এবং একটি চেষ্টা করার বিবৃতি যোগ করার আগ পর্যন্ত সমস্যাটি চিহ্নিত করতে পারি না:

try {
    $artisan = Illuminate\Console\Application::start($app);
}
catch (Exception $e)
{
    dd($e->getMessage());
}

এই মুহুর্তে আমি অবশেষে একটি আলোকিত বার্তা দেখেছি:

string(41) "Connection refused [tcp://127.0.0.1:6379]"

যা আমার ক্ষেত্রে একটি খারাপ রেডিস কনফিগারেশন ছিল, তবে আপনার ক্ষেত্রে কিছু হতে পারে।

আমি আশা করি এটি কাউকে সহায়তা করে, বা অন্তত পরের বার আমি এখানে এলে আমি আমার নিজের উত্তর খুঁজে পেতে পারি।


ধন্যবাদ। আমি এটি ব্যবহার করে আমার সমস্যাটি খুঁজে পেয়েছি - এটি মুদ্রিত could not find driver। এবং তখন আমি জানতে পারি যে আমি ইনস্টল করেছি php-mysql, যখন php7.0-mysqlপ্রয়োজনীয় ছিল। এই লিঙ্কটি আমাকেও সহায়তা করেছিল
ডিজিটালওশন.com

0

এটি সমাধানের সবচেয়ে সংক্ষিপ্ততম উপায় হ'ল সুডো দিয়ে কারিগর শুরু করা। এটি কারিগরকে প্রয়োজনীয় সমস্ত অনুমতি দেবে এবং সুরক্ষার কোনও সমস্যাও করবে না।

সুতরাং পরিবর্তে কারিগর পরিবেশন শুরু:

$ php artisan serve

ব্যবহার করার চেষ্টা করুন:

$ sudo php artisan serve 

এইভাবে আপনাকে কোনও অনুমতি পরিবর্তন করতে হবে না


-5

আমার একই সমস্যা রয়েছে, আমি কেবল chmod কমান্ড লাইনের সাথে ডিরেক্টরি অ্যাপ / স্টোরেজ থেকে অনুমতিটি 775 এ পরিবর্তন করি


5
এটি ইতিমধ্যে বর্তমানে গৃহীত উত্তরে চিহ্নিত করা হয়েছে (এবং ডিরেক্টরিটির গোষ্ঠীটি পুরোপুরি সঠিক উত্তর হিসাবে সঠিকভাবে সেট করার বিষয়ে সেই উত্তর থেকে তথ্য প্রয়োজন হবে
ম্যাট গিবসন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.