問題タブ [require-once]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - require_onceの使用が非常に悪いのはなぜですか?
私がより良いPHPコーディング慣行について読んだことはすべてrequire_once
、速度のために使用しないでくださいと言い続けています。
どうしてこれなの?
と同じことをするための適切な/より良い方法は何require_once
ですか?重要な場合は、PHP5を使用しています。
php - PHP realpath キャッシュを調整するにはどうすればよいですか?
最近のバージョンの PHP には、ファイルの実際のパスを知るためのファイル名のキャッシュがあり、それrequire_once()
をinclude_once()
利用できます。
キャッシュのサイズを設定するためにphp.iniに設定できる値がありますが、サイズをどのようにすべきかを知る方法がわかりません。デフォルト値は 16k ですが、使用しているキャッシュの量を知る方法がありません。ドキュメントはあいまいです:
PHP が使用するリアルパス キャッシュのサイズを決定します。PHP が多くのファイルを開くシステムでは、実行されるファイル操作の量を反映するために、この値を大きくする必要があります。
はい、許可されているキャッシュの量をab
増やして、または他のテストを実行してテストを実行できますが、遠くからのタイミングだけでなく、もう少し内省的なものが欲しいです。
php - 静的ファクトリ パターンを使用するときに PHP ライブラリを含める最良の方法は何ですか?
私の PHP ライブラリには、いくつかの静的ファクトリ パターンがあります。ただし、メモリ フットプリントが手に負えなくなってきており、実行時に必要なファイルの数を減らしたいと考えています。以下は、現在の状況の例です。
Car.php と Truck.php のどちらか一方のみが必要な場合でも、含める必要があるため、これは望ましくありません。私の知る限り、require/include とその ..._once バリエーションには、呼び出しと同じスコープのライブラリが含まれています。これは本当ですか?
もしそうなら、これはメモリリークにつながると思います:
2 番目の例では、require_once フレーバーが使用されていても、呼び出しのスコープのために、Create() への複数の呼び出しが複数の require につながるように見えます。
これは本当ですか?これらの例でライブラリをphpに動的に含める最良の方法は何ですか?
ありがとう!
php - PHP/HTML/CSS: require_once() を使用すると IE の動作がおかしくなる
これは、私がこれまで PHP で経験した中で最も奇妙な問題です。
1 ページを除いて、すべてのページは正常に見えます。この問題を最初に見たとき、これは IE とスタイルシートでよくある問題の 1 つだと思いました (このページに特定の CSS ファイルがあります)。問題が本当にこのファイルにあることを確認するためだけに、CSS ファイルを除外しようとしましたが、そうではありませんでした。次に、HTML タグを閉じるのを忘れたと思ったので、コードを何度も調べましたが、すべて正しいようでした。そのため、次のコードをコメントに入れると、ページ自体が正常に動作することに気付くまで、コードをコメントに入れて IE と比較し始めました。
これは有効なパスであり、ファイルには関数を含むクラスが含まれているだけです。MySQL クエリが失敗した場合、die() 以外の出力はありません。
IE で奇妙に見えるものは次のとおりです。
- コンテナは通常は中央に配置されていますが、現在は左側にあります。
- 繰り返し x を使用した背景は、最後まで行きません。
- メニューのホバー機能が動作しません。
誰?
編集:別のファイルに adjacency.php を含めようとしましたが、同じ問題が発生しました。
php - require_once 無視
Windows上のphpの奇妙な問題...私のアプリケーションは、設定ファイルをロードし、自動ロードを登録し、初期化などを行う「コア」ファイルをコアファイルの上部にロードします。これは、別のディレクトリからコアファイルをインクルードすると、現在のディレクトリ内のすべてに対して正常に機能しますが、構成ファイルのインクルードは黙って無視されます... 誰かがこれを前に見たことがありますか?
/webroot/core.php
/webroot/config.php
/webroot/admin/index.php
私の理解では、ファイル操作は要求を行うファイルのディレクトリに相対的であり、require_once("config.php") は core.php に相対的なファイルを選択すべきではありませんか? このコードは、Mac または Linux では期待どおりに機能しますが、Windows ではまったく機能しません (完全なパスまたは ../ を使用するように要件を変更すると、機能します)。
本当の狂気は、require_once("config.php") がエラーをスローしないのに、内部のコードが実行されないことです!
php - PHPといくつかのグローバル変数
私はとで使用し$Logger
ます。
で使用します。templates/list.php
widgets/list.php
$Templates
/widgets/list.php
上記のコードはこのエラーをスローします:
注意:未定義の変数: 99行目
Logger
で 致命的なエラー:99 行目で非オブジェクト.../templates/list.php
のメンバー関数を呼び出し ますtoLog()
.../templates/list.php
UPDこれ が99行目です。
php - PHP:存在する必要なファイルを開くことができませんでした
Zend_Service_Amazon_S3
を使用してファイルを含めようとしています
また、インクルードパスにZendライブラリ全体が配置されているディレクトリを含め、インストールはZend Server CE(デフォルトでZend Frameworkを含む)内にあります。しかし、何をしようとしても、問題が発生した場合は次のようになります。
Fatal error: require_once() [http://php.net/function.require]: Failed opening required 'Zend/Server/Amazon/S3.php' (include_path='/usr/local/zend/apache2/htdocs:/usr/local/zend/apache2/htdocs/app/:.:/usr/local/zend/share/ZendFramework/library:/usr/local/zend/share/pear:/usr/local/zend/apache2/htdocs/app/vendors') in /usr/local/zend/apache2/htdocs/app/models/item.php on line 3
Zend / Service / Amazon / S3.phpは、次のパスの下にあります。
- / usr / local / zend / share / ZendFramework / library
- / usr / local / zend / apache2 / htdocs / app / vendors
php - フラッシュプログラムによって呼び出されたときにPHPスクリプトがファイルを見つけることができない
私は現在、/ var / www / vhosts / company/httpdocsにあるスクリプトmail.phpを呼び出すプログラムに取り組んでいます。mail.phpはrequire_once dirname(__FILE__).'/../pear/Mail.php'
smtp送信を実行しようとしていますrequire_once
が、失敗しています。私のPEARディレクトリは/var/ www / vhosts / company/pearにあります。次に、/ var / www / vhosts / company / pearをinclude_pathに追加しようとしましたが、require_once
それでも失敗します。
私は一歩下がって、mail.phpをfile_exists(dirname(__FILE__).'/../pear/Mail.php')
、結果をログファイルに出力する単純なスクリプトとして置き換えることにしました。スクリプトを個別に実行すると、正常に動作し、1が返されます。フラッシュプログラムがスクリプトを実行すると、何も返されません。dirname(__FILE__).'/../pear/Mail.php'
スクリプトを個別に実行するか、フラッシュファイルで実行するかに関係なく、印刷すると同じ結果が返されます。Mail.phpPEARファイルでchmod777も試しましたが、何もしませんでした。
何が起こっているのかについて何かアイデアはありますか?
php - インクルードパス解決はrequire_onceでどのように機能しますか?
PHP で Web アプリを作成していたところ、奇妙な状況に遭遇しました。私の問題を説明するために、次の構造の Web アプリを考えてみましょう。
これらのファイルの内容:
index.php:
f1.php:
f2.php: 空白
ブラウザで index.php を開こうとすると、次のエラーが表示されます。
私が見逃している明らかなものはありますか?インクルードパスはPHPでどのように機能しますか?
この質問をする前に、実験して調べようとしました。次のように、別のテストを設定しました。
index.php:
f1.php:
f2.php: 空白
驚いたことに (そして完全に混乱していました)、これでうまくいきました。
では、パス解決の背後にある秘密は何ですか?
PS私はこの質問を見ましたが、ここで述べた2番目のケースにはまだ答えていません。
php - PHPのrequire_onceが思い通りに動作しない..相対パスの問題
require_once への相対パスの割り当てに問題があります。私はそれが私が見ていない単純なものだと確信しています...
フォルダ ディレクトリ構造 レベル 1: サイト レベル 2: インクルード レベル 2: クラス
so... site/include/global.php <-- これは、関数 autoload が site/class/db.php から呼び出される場所です
使用しようとすると
私は得る:
警告: require_once(../class/db.php) [function.require-once]: ストリームを開くことができませんでした: そのようなファイルまたはディレクトリはありません
致命的なエラー: require_once() [function.require]: 必要な '../class/db.php' (include_path='.;./includes;./pear') を開くことができませんでした
私は何を間違っていますか?クラスフォルダーにglobal.phpを配置すると問題なく動作するので、問題の原因となっている相対パスの理解が不十分であると想定しています..
ありがとう