2017-11-13 2 views
0

私は最後の2日から非常に奇妙な問題に直面しています。私は2つの異なるサーバを持っています.1つはwindows(php v5.3)で、もう1つはlinux(php v7.1 ngnix)です。私はすでにWindowsサーバー上で実行されているプロジェクト(誰かによって書かれている)を持っているので、今度はこのプロジェクトを(コード変更なしで)Linuxサーバー上に移動しなければなりません。私の問題は、ログイン機能がある -PHP ArgumentCountErrorサーバーは特定ですか?

Function userAuthentication($username,$password,$locationId,$url,$source) 
{ 
.... 
} 

そして、それは私がパラメータが、この場合には一致していないが、私はテストとして、このコードは実際に知っている

userAuthentication($username, $password,'',$url) ; 

(Windowsサーバ上)と呼んでいます多くの関数Wであることを(これは、そのコードを変更することで解決することができますが、私は望んでいないことができ、私は結果を与えるとWindows上で正常に動作しますが、その同じコードは私のLinuxサーバ -

ArgumentCountError: Too few arguments to function Authentication::userAuthentication(), 4 passed in

に明白なエラーを与えています同じエラー)。 私はすでにGoogleで検索しましたが、何も見つかりませんでした。私はこれが窓で起こっていない理由を知ることは非常に興味があります。そのArgumentCountErrorサーバー固有のものか、WindowsサーバーがLinuxやPHPのバージョンの問題やその他の設定と同じくらい重大ではありませんか?私はこの問題を解決するために修正する必要があります。

誰もがそのことについてどんな考えを持っている私を助けてください、おかげ

+0

もちろん、Googleにとっては難しいのは当然でしょうか? http://fp.net/manual/en/class.argumentcounterror.php –

+0

[Fatal error:Uncaught ArgumentCountError:Admincategory :: deletecategory()の機能に必要な引数が少なすぎます(https://stackoverflow.com/)質問/ 47108428/fatal-error-uncaught-argumentcounterror-too-few-arguments-to-function-admincat –

答えて

2

違いはPHPのバージョンではなく環境(Linuxの対窓)ではありません。

あなたはPHP 7.0から7.1への移行で見ることができるように(リンク:http://php.net/manual/en/migration71.incompatible.php

投げ

Previously, a warning would be emitted for invoking user-defined functions with too few arguments. Now, this warning has been promoted to an Error exception. This change only applies to user-defined functions, not internal functions. For example:

<?php 
function test($param){} 
test(); 

上記の例を少なすぎる関数の引数を渡すことになります出力何か類似する:

Fatal error: Uncaught ArgumentCountError: Too few arguments to function test(), 0 passed in %s on line %d and exactly 1 expected in %s:%d

どのようにそれを解決するには?

関数内のすべてのパラメータを定義する必要があります。それは "不快"かもしれませんが、開発者としてはより良い方法です。この問題に関して怠惰にしないでください。

+0

ご清聴ありがとうございます。今あなたが提案したほどの仕事があります。 :P –

+0

はい、こんにちは、幸運:) –

1

これは、(彼らがすべきのように)呼び出しの詳細厳しいことがあり、新しいPHPのバージョンに関係するすべてのものを持っています。これを再度機能させたい場合は、デフォルトの値を与えることによって、追加のパラメーターをオプションにしてください。

この種の問題を防ぐには、7.xにローカルに更新する必要があります。

同様:

Function userAuthentication($username,$password,$locationId,$url,$source = '') 
関連する問題