2011-04-21 28 views
2

私はサーバーinclude()関数が機能したくないという理由で、なぜ私にはわからないのですか?include()うまくいきません

は私が持っている:それは返す

if (file_exists('/home/p002/htdocs/Project2/library/IntelliSMS/SendScripts/IntelliSMS.php')) { 
    echo "1 works"; 
} else { 
    echo "The file 1 does not exist"; 
} 

if(include "$_SERVER[DOCUMENT_ROOT]/Project2/library/IntelliSMS/SendScripts/IntelliSMS.php" == 'OK') 
{ 
    echo 'INCLUDE 1 works'; 
} 
else 
{ 
    echo 'Step 1 fail'; 
} 
if(include '/home/p002/htdocs/Project2/library/IntelliSMS/SendScripts/IntelliSMS.php' == 'OK') 
{ 
    echo 'INCLUDE 2 works'; 
} 
else 
{ 
    echo 'Step 2 fail'; 
} 

1 works Step 1 fail Step 2 fail 私は仕事にそれを強制する方法は考えています。 HELP 私はZendのフレームワークを使用して、このファイルが-librariesをZendのためのライブラリ(並列である - ディレクトリが、それはディレクトリを含めることなく、あまりにも仕事をしたくはありません:としてとき、それは私にとって本当に不思議です/


include ("/home/p002/htdocs/Project2/library/IntelliSMS/SendScripts/IntelliSMS.php"); 

そして、それは私が唯一の空白のページを持って正しいパスである。しかし、私が追加したときに:私が追加!

include ("/homedddd/p002/htdocs/Project2/library/IntelliSMS/SendScripts/IntelliSMS.php"); 

をそしてそれは、ページが空白でない間違ったパスがあり、それをOKのように見えます。このIntelliSMSライブラリに何か問題がありますが、それは私のサーバーでは動作しませんが、その理由はわかりません。おそらくサーバがSMSや何かを送信しているのをブロックしていますか?あなたは何か考えていますか?このライブラリはhttp://intellisms.co.uk/sms-gateway/php-sdk/です。OpenSSL拡張モジュールが必要かもしれないという問題がありますか?作品を始めるにはどうすればいいですか?

+0

'include( '/ home/...'); ' – Aif

+0

私はあなたの最初の提案を成功させなかった後、私の答えを更新しました。たぶんそれは許可の問題です。あなた(そのサーバー)は、あなたが含めるファイルに対して読み取り権限を持っていますか? – Demento

+0

スクリプト 'IntelliSMS.php'は何を返しますか?つまり、 'return'文で終了するのか(それはあなたの用法に合っているべきですか)何かをエコーし​​ますか?(あなたの使い方には十分ではありません) –

答えて

1

コードの最初のブロックでは、/home/p002/htdocs/Project2/library/IntelliSMS/SendScripts/IntelliSMS.phpが存在することがわかりました。このファイルをインクルードしようとすると、まったく同じ文字列を使用することはありません。もしそうなら、それはうまくいくはずです。

編集: 試してみましたが、失敗しました。その場合、権限の問題のように見えます。そのファイルに対する読み取りアクセス権がない場合、最初のテストは機能しますが、ファイルを含めて失敗します。

+0

hmmm私は読んで実行する権利を変更しましたが、まだ動作しません:/私はすべての権利を追加してチェックします... – canimbenim

0

スラッシュを変更しました。これは問題の可能性があります。

+0

これらのすべてが機能しないため、私の投稿を編集しました:/ – canimbenim

0

パス名に\ backslashを使用しないでください。 WindowsとUn * xサーバーの両方で動作するスラッシュ/を使用してください。

また、両方のサーバーでベースディレクトリ名が同一である可能性は低いです。それは再配置可能にし、そのようDOCUMENT_ROOT/home/p003/htdocsを置き換える:

include "$_SERVER[DOCUMENT_ROOT]/Project2/library/IntelliSMS/SendScripts/IntelliSMS.php"; 

は、二重引用符に注意してください。

可能であれば、大文字と小文字を区別しないファイル名を避けることをお勧めします。

0

ここでは間違っていることがありますが、実際にはすべての試みで偽を含めることを実際に試みています。この

include '/path/to/file.php' == "OK"; 

ようにすること、何かが

include FALSE; 

これは、あなたが

if((include '/path/to/file.php') == "OK") { echo("works"); } 

その他のSOユーザーはパスがとても長いので、この事実を見落としてやりたいことはおそらくであることに等しく、比較コードブロックに隠されてしまいます。

+0

私は: if (file_exists( '/ home/p002/htdocs/Project2/library/IntelliSMS/SendScripts/IntelliSMS.php')){ echo "1 works
"; } else { echo "ファイル1は存在しません
"; }(含む($ _SERVER [DOCUMENT_ROOT] "/ Project2を/ライブラリ/ IntelliSMS/SendScripts/IntelliSMS.php")== 'OK') {\tエコー 'は1つの作品
をINCLUDE' 場合、 } else { \t echo 'Step 1 fail
'; }(== 'OK'( "/home/p002/htdocs/Project2/library/IntelliSMS/SendScripts/IntelliSMS.php")を含む) {\tエコー 'は2つの作品
をINCLUDE' 場合、 } else { \t echo 'Step 2 fail
'; } まだ同じです – canimbenim

関連する問題