Mihail Minkov
Mihail Minkov

Reputation: 2633

Use php filesize function with GET variables

I am trying to use the filesize php function to automatically write the filesize in a meta tag I am using.

What I am doing normally is for example

<meta name="DC.format" content="<?= filesize($filename); ?> bytes">

Now, if this is used with the following syntax it returns:

php
<meta name="DC.format" content="<?= filesize("index.php"); ?> bytes">

resulting html
<meta name="DC.format" content="6412 bytes">

But if I use the following syntax I get the following error.

php
<meta name="DC.format" content="<?= filesize("index.php?locale=en_US"); ?> bytes">

resulting html
<meta name="DC.format" content="<br /><b>Warning</b>:  filesize():
stat failed for index.php?es=./&amp;en=./en/&amp;locale=en_US in
<b>D:\xampp\htdocs\casasenmeridabaspul.com-v2\header.php</b>
on line <b>87</b><br /> bytes">

What I suppose is happening is that filesize is getting the filesize of the specific file without doing any php processing or such. How can I calculate the resulting file size after all the server side has processed everything?

With a little more detail:

I have header.php, footer.php and index.php where index.php has the previous 2 included. I was thinking perhaps something like curl but I am not really familiar with it so I would leave it to the experts.

Thanks in advance.

Upvotes: 0

Views: 314

Answers (2)

AbraCadaver
AbraCadaver

Reputation: 78994

It's not a file. It's text output from the execution of the file. The best you can do is strlen() or mb_strlen() without using HTTP functions / classes I think:

<?= strlen(file_get_contents("http://www.example.com/index.php?locale=en_US")); ?>

Upvotes: 1

ComFreek
ComFreek

Reputation: 29424

You pass an (invalid) local path to filesize() and it therefore tries to resolve it on your hard disk. This obviously fails due to the query parameters which invalidate the file name.

It is a valid part of a URI however. You can therefore start a HTTP request and get the size of the returned content:

PHP: Remote file size without downloading file

Please bear in mind that this method will fire off a HTTP request which can influence the performance quite a bit.

Upvotes: 1

Related Questions