خطای No such file or directory

پرسیده شده
فعالیت 1475 روز پیش
دیده شده 3671 بار
1

سلام استاد وقت بخیر /

یه مشکلی برام پیش اومده و اینکه مشکل نصب pear برای wamp دارم.

با اجرای برنامه هام به اررو  (

    
Warning: include(../lib/helper.php): failed to open stream: No such file or directory in D:\developer\php\first_project\bootstrap\config.php on line ۳

Warning: include(): Failed opening '../lib/helper.php' for inclusion (include_path='.;C:\php\pear') in D:\developer\php\first_project\bootstrap\config.php on line ۳
your connected in database... :)

 

) بر میخورم.

به همین دلیل نمیتونم لینک ها رو به درستی include کنم. 

 

تو استک اور فلو نحوه رفعش ر دیدم ولی وقتی میخوام رفعش کنم ، در cmd مشکل دارم.

و اونجا هم به اروری که تصویرش پیوست شد میخورم.

 

فایل go-pear.phar ر در دایرکتوری مسیر نصب php اضافه میکنم، اونرو میشناسه ولی نصب نمیکنه.

بعد از زدم اینتر هیچ اتفاق خاصی نمیوفته.

هرچند که مسیر php.exe ر هم بهش دادم .

 

ممنون میشم راهنمایییم کنید.

فایل پیوست

Sadra Soltani
Sadra Soltani

28 فروردین 99

1
حذف شده

سلام.

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

این خطا ربطی به pear نداره، شما به این قسمت خطا توجه کنید:

include(../lib/helper.php): failed to open stream: No such file or directory

در این مسیری که دادید helper.php رو پیدا نکرده و با خطا مواجه شده.

 

* اما واسه اطلاعتون این مطلب رو هم اضافه کنم که اون خطی که pear نوشته منظورش چیه:

include_path='.;C:\php\pear'

داخل php ما include_path داریم که با ست کردن دایرکتوری های مختلف میتونیم مشخص کنیم ک برای مثال دستوراتی مثل requireincludefopen()file()readfile() و file_get_contents() فایل های مورد نظرو از داخل دایرکتوری هایی که ست کردیم، دنبالشون بگرده و اگر پیدا نشد با خطا مواجه میشه.

مثلا خودمون ست میکنیم: (راهی مناسب برای جلوگیری از خطای آدرس دهی و همچنین استفاده کنار در autoloading)

set_include_path(get_include_path() . PATH_SEPARATOR . 'core/lib');
set_include_path(get_include_path() . PATH_SEPARATOR . 'core/view');

در دستورات بالای برای مثال تمام دایرکتوری هایی که کلاس ها و فایل های PHP داخلشون قرار داره رو مشخص کردیم. حالا اگر مثلا فایل helper.php در مسیر core/lib باشه، کافیه فقط نام فایلو include کنم:

include 'helper.php';

چون با توجه به مسیرهایی که در include_path ست کردیم، از داخل اون دایرکتوری ها دنبال فایلی به اسم helper.php میگرده.

اما اگر مقداری ست نکنیم، مقدار include_path بصورت پیشفرض در تنظیمات PHP در قسمت اولش، به نقطه یعنی current directory و در قسمت دوم، به مسیر C:\php\pear اشاره میکنه.(مسیرها با ; از هم جدا شدن) این مسیر C:\php\pear اصلا در درایو C وجود نداره. و خطا هم ربطی به این مسیر نداره.

(البته برای تمرین و اینکه با نحوه ی کار include_path آشنا بشید، میتونید برید داخل درایو C و دایرکتوری php رو ایجاد کنید و داخلش دایرکتوری pear رو بسازید و داخل این دایرکتوری مثلا فایل test.php رو ایجاد کنید و بعد در یک پروژه ای که در دایرکتوری www دارید(مربوط به ومپ سرور)، بنویسید inlclude 'test.php' و نتیجه ی اونو ببینید. میبینید که فایل test.php که در مسیر C:\php\pear ایجاد کردید، اجرا میشه.)

 

اما در مورد سؤالتون، خطا مربوط به قسمت اول مسیر یعنی نقطه (.) منظور current directory هست. یعنی از محل current directory، آدرس بندی رو در include درست مشخص نکردید و با توجه به سؤالتون، در مسیر ../lib/helper.php، فایل مورد نظرو پیدا نکرده.

فایل پیوست

محسن موحد

توسط

محسن موحد

29 فروردین 99

0
حذف شده

سلام جناب موحد.

ممنون از پاسخگوییتون.

 

ولی من درقسمت لینک دادنم مشکل دارم /

 

اینکه:

سه فایل php در مسیر های :

 

first_project\index.php   ----> file asli

first_project\bootstrap\config.php  -----> kanfige database

first_project\lib\func.php   ------> tavabe

 

حالا لینک های زیر رو در فایل ها میذارم:

 

config.php:

include "lib/func.php";

 

 

index.php:

//include "lib/func.php";
include "tpl/tpl-index.php";  //site template
include "bootstrap/config.php";

 

با اجرای این کد و رفرش index اروری در این صفحه دریافت نمیکنم، ولی در صفحه config  به اروری که گفته شد میخورم .

 

 

حالا اگه شیوه آدرس دهی ر عوض کنم :

 

config.php:

include "../lib/func.php";

 

یه دایرکتوری به عقب بره بعد آدرس رو بره

 

 

index.php:

<?php
//include "lib/func.php";
include "tpl/tpl-index.php";
include "bootstrap/config.php";

 

حالا در index ارور دارم ولی در صفحه config به ارور نمیخورم.

 

یعنی با عوض کردن نوع لینک دادن همون ارور منتها در صفحات مقابل هم رو دارم.

 

 

طبیعتا میتونم با برداشتن لینک func..php ارور ر از بین ببرم .

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

چون با سرچ کردن ارور چیزی که فهمیدم این بود که احتمالا مربوط به pear باشه که فرمودید نیست.

 

امیدوارم منظورم ر متوجه شده باشی 

تشکر از وقتی که میذارید

فایل پیوست

Sadra Soltani

توسط

Sadra Soltani

29 فروردین 99

0
حذف شده

سلام

یه مورد کوچیک رو هم چک کن صدرا جان.

اسم پوشه توی پروژه libs بوده و تو توی کدهات lib نوشتی. ببین اشکال از این نیست....

فایل پیوست

لقمان آوند

توسط

لقمان آوند

29 فروردین 99

0
حذف شده

نه استاد از این بابت نیستش

فایل پیوست

Sadra Soltani

توسط

Sadra Soltani

29 فروردین 99

0
حذف شده

فایل helper.php رو داخل پوشه lib نداری که ...

اونو بساز اونجا.

چیزی که مشخصه خطا داره میگه این فایل وجود نداره.

فایل پیوست

لقمان آوند

توسط

لقمان آوند

29 فروردین 99

حذف شده
من از اسم func.php استفاده کردم. که خوده IDE فایل ها رو میشناسه و در آدرس هام هم lib/func.php دادم
Sadra Soltani

29 فروردین 99

حذف شده
error: Warning: include(../bootstrap/config.php): failed to open stream: No such file or directory in D:\developer\php\first_project\lib\func.php on line 2 Warning: include(): Failed opening '../bootstrap/config.php' for inclusion (include_path='.;C:\php\pear') in D:\developer\php\first_project\lib\func.php on line 2
Sadra Soltani

29 فروردین 99

3

مورد تایید استاد

حذف شده

سلام.

با توجه به کدهاتون، علت خطاهایی که دریافت میکنید اینه که شما index.php که داخل root پروژه هست رو باز میکنید که داخل اون فایل config.php اینکلود شده بعد شما داخل فایل config.php فایل func.php رو نسبت به مسیر فایل config.php آدرس دهی کردید که این اشتباهه. چون فایل اجرایی شما index.php هست.

این کد شماست: config.php

include "../lib/func.php";

زمانی این مسیر دهی درسته که شما فایل config.php رو در مرورگر باز کنید. برای مثال:

http://localhost/7todo/bootstrap/config.php

اما وقتی index.php رو باز میکنید مسیر دهی ها نسبت به فایل index.php باید در نظر گرفته بشه.

یعنی اگر index.php رو بخواید باز کنید، فایل config.php به این شکل باید نوشته بشه:

include "lib/func.php";

این توضیحاتو گفتم که علت خطارو متوجه بشید.

اما در کل این نوع include کردن ها درست نیست.(منظورم اینکلود های تو در تو درست نیست.)

همونطور که استاد آوند توو پروژه توضیح دادن، هر فایلی مخصوص کاری ایجاد شده.

config وظیفش کانفیگ هست و db وظیفش مدیریت دیتابیس و ...

برای include کردن ها هم باید یک صفحه در نظر گرفته بشه و تمام include ها در اونجا انجام بشه تا مثل الان موقعیت و آدرس بندی فایل ها نسبت به موقعیت فایل اجرایی تغییر نکنه.(اینکه در هر صفحه یک include انجام بشه اولا یک بی نظمی ایجاد میکنه و مهمتر از اون همین خطایی که شما برخوردید. نسبت به هر فایلی که در مرورگر باز میکنید، مسیر دهی فرق خواهد کرد. وقتی index.php رو باز میکنید، آدرس ها نسبت به محل index.php در نظر گرفته میشه.)

فایل پیوست

محسن موحد

توسط

محسن موحد

29 فروردین 99