如何通过php脚本获取资源?

如何通过php脚本获取资源?,php,server-configuration,Php,Server Configuration,我正在尝试在web应用程序中执行以下操作: <img src="static.example.com/image01.jpg?width=300&height=300" /> 在访问.jpg(或我选择的任何文件类型)时,是否可以让我的服务器(我在共享托管环境中使用Apache)运行PHP脚本,而不仅仅是为文件提供服务 我知道PHP脚本必须设置正确的头等等,我只是想知道如何在第一时间运行它 我知道可以这样做: <img src="static.example.com

我正在尝试在web应用程序中执行以下操作:

<img src="static.example.com/image01.jpg?width=300&height=300" />

在访问.jpg(或我选择的任何文件类型)时,是否可以让我的服务器(我在共享托管环境中使用Apache)运行PHP脚本,而不仅仅是为文件提供服务

我知道PHP脚本必须设置正确的头等等,我只是想知道如何在第一时间运行它

我知道可以这样做:

<img src="static.example.com/get_image.php?name=image_01.jpg&width=300&height=300" />


但这不是我想要的方式。

你可以使用mod_rewrite,只要你在一个子目录中,或者你的其他static.example.com都会这么做

将类似的内容添加到该子目录中的.htaccess中

<IfModule mod_rewrite.c>
   RewriteEngine On
   RewriteCond %{query_string} ^height=([^&]+)&width=([^&]+)
   RewriteRule (.*\.jpg|.*\.png|.*\.gif) controller.php?name=$1&height=%1&width=%2
</IfModule>
应该变成

controller.php?name=test.jpg&height=100&width=120

另一种方法是将ApacheServe.jpg作为该目录的php脚本。 只需查看httpd.conf或php.conf并查找.php。找到该指令,并在.jpg的
中复制它。 我从来没有在单个目录中尝试过这种方法,但最终它会比mod_重写路径更快

比如:

<Files *.jpg>
SetOutputFilter PHP
SetInputFilter PHP
</Files>
AddType application/x-httpd-php .jpg

SetOutputFilter PHP
SetInputFilter PHP
AddType应用程序/x-httpd-php.jpg

您可以使用mod_rewrite,前提是您位于子目录中,或者您的其他static.example.com都将使用mod_rewrite

将类似的内容添加到该子目录中的.htaccess中

<IfModule mod_rewrite.c>
   RewriteEngine On
   RewriteCond %{query_string} ^height=([^&]+)&width=([^&]+)
   RewriteRule (.*\.jpg|.*\.png|.*\.gif) controller.php?name=$1&height=%1&width=%2
</IfModule>
应该变成

controller.php?name=test.jpg&height=100&width=120

另一种方法是将ApacheServe.jpg作为该目录的php脚本。 只需查看httpd.conf或php.conf并查找.php。找到该指令,并在.jpg的
中复制它。 我从来没有在单个目录中尝试过这种方法,但最终它会比mod_重写路径更快

比如:

<Files *.jpg>
SetOutputFilter PHP
SetInputFilter PHP
</Files>
AddType application/x-httpd-php .jpg

SetOutputFilter PHP
SetInputFilter PHP
AddType应用程序/x-httpd-php.jpg

我假设可以将.*更改为.*jpg或其他正则表达式以匹配我想要的扩展,对吗?它几乎可以工作,但我认为参数传递不正确。这是我的查询字符串:image01.jpg?height=200&width=300这是我在.htaccess:RewriteEngine中的RewriteRule(.*\.jpg.*.png.*.gif)controller.php?q=$1,但当我打印$_SERVER['query_string']时,它会给出q=image01.jpg(我希望它给出height=200&width=300)。谢谢你的帮助。如果你打印$_GET['q'],会发生什么?我认为这是因为我们指定了?stuff=asdf,我们正在覆盖原始的查询字符串。我修改了上面的代码,用新的参数表示原始参数。希望它能工作。我假设。*可以更改为。*jpg或其他正则表达式以匹配我想要的扩展,对吗?它几乎可以工作,但我认为参数传递不正确。这是我的查询字符串:image01.jpg?height=200&width=300这是我在.htaccess:RewriteEngine中的RewriteRule(.*\.jpg.*.png.*.gif)controller.php?q=$1,但当我打印$_SERVER['query_string']时,它会给出q=image01.jpg(我希望它给出height=200&width=300)。谢谢你的帮助。如果你打印$_GET['q'],会发生什么?我认为这是因为我们指定了?stuff=asdf,我们正在覆盖原始的查询字符串。我修改了上面的代码,用新的参数表示原始参数。希望它能起作用。