2016-12-21 19 views
0

WordPress環境で。filemtimeを使用してバージョン管理を追加しようとしましたが、失敗します。

私は自動的にfilemtimeを使用して、私のスクリプトにバージョン管理を追加しようとしますが、次のエラーメッセージが表示されますよ:

Warning: filemtime() [function.filemtime]: stat failed for (file name) 

コードがシンプル

$myfile = get_template_directory_uri() . '/js/script.js'; 
wp_enqueue_script('mywebsite-script',$myfile , array('jquery'), filemtime($myfile), true); 

ファイルへのパスが正しいですしかし、私が言ったように私はstat failedメッセージを得ます。

if (file_exists($myfile))チェックを追加すると、操作全体がスキップされます。 しかし、$myfileのパスをエコーし​​た場合、これは正しく表示され、ブラウザで開くことができます!

パスに空白文字が含まれていません。サーバーがWindows上にないため、エンコードを読んでこれが原因である可能性がありますが、その場合には回避策が何であるべきかわかりません。

どこに問題がありますか?

+0

ファイルのパーミッションを...それが私の考えですが、PHPはファイルへのアクセス権を持っていません。 – ArtisticPhoenix

+0

@ArtisticPhoenix:まだphpはファイルを読むことができ、Wordpress経由でスクリプトをエンキューすることができます...ファイルの時刻を読み取ることはできませんか?それはPHPを介して許可の問題であるかどうかを確認する方法がある場合は知っていますか? – nico

答えて

0

あなたが代わりに実際のパスを使用する必要があります。

$myfile = get_template_directory_uri() . '/js/script.js'; 
$realpath = get_template_directory().'/js/script.js'; 
wp_enqueue_script('mywebsite-script',$myfile , array('jquery'), filemtime($realpath), true); 
+0

私はこれも失敗したと思ったが、私は間違っていた、私は部品をコメントアウトしていた。これはうまくいった。ありがとう!面白いのですが、私は '_uri' Wordpressを使って例を見つけました。 – nico

+0

私はこれが私のxamppでローカルに壊れていることを知りました。スクリプトへの「実際のパス」は次のようになります: 'http:// localhost/folderD:foldersonhardiskwithnospaces/wp-content/themes/theme/js/script.js' ... – nico

+0

get_template_directory()は実際のパスを返します /var/www/wordpress/wp.local/wp-content/themes/twentyseventeen(linux) 私は、あなたが提供する 'uri'がディレクトリパスではないことを確認します。私が間違っている ? –

関連する問題