PHP5.2.2以上版本的GD库实现了两个截屏函数 imagegrabscreen 和 imagegrabwindow ,分别用于截取整个屏幕和截取某个窗口(同ALT+PrintScreen)的屏幕。
1. 截取整个屏幕 Screenshot
PHP代码
- <?php
- $im = imagegrabscreen();
- imagepng($im, "myscreenshot.png");
- ?>
2. 截取一个窗口 Capture a window (IE for example)
PHP代码
- <?php
- $browser = new COM("InternetExplorer.Application");
- $handle = $browser->HWND;
- $browser->Visible = true;
- $im = imagegrabwindow($handle);
- $browser->Quit();
- imagepng($im, "iesnap.png");
- $im = imagegrabscreen();
- ?>
3. 截取IE内容 Capture a window (IE for example) but with its content!
PHP代码
- <?php
- $browser = new COM("InternetExplorer.Application");
- $handle = $browser->HWND;
- $browser->Visible = true;
- $browser->Navigate("http://www.kalvin.cn/");
-
-
- while ($browser->Busy) {
- com_message_pump(4000);
- }
- $im = imagegrabwindow($handle, 0);
- $browser->Quit();
- imagepng($im, "iesnap.png");
- ?>
4. 截取IE的全屏模式 IE in fullscreen mode
PHP代码
- <?php
- $browser = new COM("InternetExplorer.Application");
- $handle = $browser->HWND;
-
- $browser->Visible = true;
- $browser->FullScreen = true;
- $browser->Navigate("http://www.kalvin.cn/");
-
-
- while ($browser->Busy) {
- com_message_pump(4000);
- }
- $im = imagegrabwindow($handle, 0);
- $browser->Quit();
- imagepng($im, "iesnap.png");
- ?>
上面就是说如何使用PHP COM调用IE窗口打开网页进行截屏,但很多朋友得到的结果只是一张纯黑的图片,这是为什么呢?
可能有两种情况,第一种情况就是这个COM组件只适用于WINDOWS服务器,其它系统的服务器是不支持的,因为他没有IE浏览器,第二种情况就是没有打开允许服务与桌面交互!其中第二种情况最为常见,打开的方法就是点击计算机(我的电脑) -> 右键 -> 管理 -> 服务和应用程序 -> 服务 -> Apache(我自己使用apache服务器) -> 右键 -> 属性 -> 登录 -> 登录身份下面既是!
为了使自己的程序在不同的平台中拥有更好的兼容性,很多时候我们都要获取当前Php的运行环境参数。比如我们常用到的:获取 magic_quotes_gpc状态,来决定当表单提交时我们是否转义(addslashes)数据;设定max_execution_time来延长 程序的执行时间;设定error_reporting使自己的项目在开发与运营阶段切换;设定memory_limit加大内存等等…
ini_set(string varname, string newvalue ) : 设定环境配置的参数
ini_get(string varname) : 获取环境配置的参数
参数列表如下:
| Name |
Default |
Changeable |
| com.allow_dcom |
"0" |
PHP_INI_SYSTEM |
| com.autoregister_typelib |
"0" |
PHP_INI_SYSTEM |
| com.autoregister_verbose |
"0" |
PHP_INI_SYSTEM |
| com.autoregister_casesensitive |
"1" |
PHP_INI_SYSTEM |
| com.typelib_file |
"" |
PHP_INI_SYSTEM |
| crack.default_dictionary |
NULL |
PHP_INI_SYSTEM |
| exif.encode_unicode |
"ISO-8859-15" |
PHP_INI_ALL |
| exif.decode_unicode_motorola |
"UCS-2BE" |
PHP_INI_ALL |
| exif.decode_unicode_intel |
"UCS-2LE" |
PHP_INI_ALL |
| exif.encode_jis |
"" |
PHP_INI_ALL |
| exif.decode_jis_motorola |
"JIS" |
PHP_INI_ALL |
| exif.decode_jis_intel |
"JIS" |
PHP_INI_ALL |
| fbsql.allow_persistent |
"1" |
PHP_INI_SYSTEM |
| fbsql.generate_warnings |
"0" |
PHP_INI_SYSTEM |
| fbsql.autocommit |
"1" |
PHP_INI_SYSTEM |
| fbsql.max_persistent |
"-1" |
PHP_INI_SYSTEM |
| fbsql.max_links |
"128" |
PHP_INI_SYSTEM |
| fbsql.max_connections |
"128" |
PHP_INI_SYSTEM |
| fbsql.max_results |
"128" |
PHP_INI_SYSTEM |
| fbsql.batchSize |
"1000" |
PHP_INI_SYSTEM |
| fbsql.default_host |
NULL |
PHP_INI_SYSTEM |
| fbsql.default_user |
"_SYSTEM" |
PHP_INI_SYSTEM |
| fbsql.default_password |
"" |
PHP_INI_SYSTEM |
| fbsql.default_database |
"" |
PHP_INI_SYSTEM |
| fbsql.default_database_password |
"" |
PHP_INI_SYSTEM |
| hwapi.allow_persistent |
"0" |
PHP_INI_SYSTEM |
| hyperwave.allow_persistent |
"0" |
PHP_INI_SYSTEM |
| hyperwave.default_port |
"418" |
PHP_INI_ALL |
| iconv.input_encoding |
ICONV_INPUT_ENCODING |
PHP_INI_ALL |
| iconv.output_encoding |
ICONV_OUTPUT_ENCODING |
PHP_INI_ALL |
| iconv.internal_encoding |
ICONV_INTERNAL_ENCODING |
PHP_INI_ALL |
| ifx.allow_persistent |
"1" |
PHP_INI_SYSTEM |
| ifx.max_persistent |
"-1" |
PHP_INI_SYSTEM |
| ifx.max_links |
"-1" |
PHP_INI_SYSTEM |
| ifx.default_host |
NULL |
PHP_INI_SYSTEM |
| ifx.default_user |
NULL |
PHP_INI_SYSTEM |
| ifx.default_password |
NULL |
PHP_INI_SYSTEM |
| ifx.blobinfile |
"1" |
PHP_INI_ALL |
| ifx.textasvarchar |
"0" |
PHP_INI_ALL |
| ifx.byteasvarchar |
"0" |
PHP_INI_ALL |
| ifx.charasvarchar |
"0" |
PHP_INI_ALL |
| ifx.nullformat |
"0" |
PHP_INI_ALL |
| ingres.allow_persistent |
"1" |
PHP_INI_SYSTEM |
| ingres.max_persistent |
"-1" |
PHP_INI_SYSTEM |
| ingres.max_links |
"-1" |
PHP_INI_SYSTEM |
| ingres.default_database |
NULL |
PHP_INI_ALL |
| ingres.default_user |
NULL |
PHP_INI_ALL |
| ingres.default_password |
NULL |
PHP_INI_ALL |
| ibase.allow_persistent |
"1" |
PHP_INI_SYSTEM |
| ibase.max_persistent |
"-1" |
PHP_INI_SYSTEM |
| ibase.max_links |
"-1" |
PHP_INI_SYSTEM |
| ibase.default_user |
NULL |
PHP_INI_ALL |
| ibase.default_password |
NULL |
PHP_INI_ALL |
| ibase.timestampformat |
"%m/%d/%Y%H:%M:%S" |
PHP_INI_ALL |
| ibase.dateformat |
"%m/%d/%Y" |
PHP_INI_ALL |
| ibase.timeformat |
"%H:%M:%S" |
PHP_INI_ALL |
| java.class.path |
NULL |
PHP_INI_ALL |
| java.home |
NULL |
PHP_INI_ALL |
| java.library.path |
NULL |
PHP_INI_ALL |
| java.library |
JAVALIB |
PHP_INI_ALL |
| java.library |
NULL |
PHP_INI_ALL |
| ldap.max_links |
"-1" |
PHP_INI_SYSTEM |
| mbstring.detect_order |
NULL |
PHP_INI_ALL |
| mbstring.http_input |
NULL |
PHP_INI_ALL |
| mbstring.http_output |
NULL |
PHP_INI_ALL |
| mbstring.internal_encoding |
NULL |
PHP_INI_ALL |
| mbstring.substitute_character |
NULL |
PHP_INI_ALL |
| mbstring.func_overload |
"0" |
PHP_INI_SYSTEM |
| mcrypt.algorithms_dir |
NULL |
PHP_INI_ALL |
| mcrypt.modes_dir |
NULL |
PHP_INI_ALL |
| mime_magic.magicfile |
"/usr/share/misc/magic.mime" |
PHP_INI_SYSTEM |
| mssql.allow_persistent |
"1" |
PHP_INI_SYSTEM |
| mssql.max_persistent |
"-1" |
PHP_INI_SYSTEM |
| mssql.max_links |
"-1" |
PHP_INI_SYSTEM |
| mssql.max_procs |
"25" |
PHP_INI_ALL |
| mssql.min_error_severity |
"10" |
PHP_INI_ALL |
| mssql.min_message_severity |
"10" |
PHP_INI_ALL |
| mssql.compatability_mode |
"0" |
PHP_INI_ALL |
| mssql.connect_timeout |
"5" |
PHP_INI_ALL |
| mssql.timeout |
"60" |
PHP_INI_ALL |
| mssql.textsize |
"-1" |
PHP_INI_ALL |
| mssql.textlimit |
"-1" |
PHP_INI_ALL |
| mssql.batchsize |
"0" |
PHP_INI_ALL |
| mssql.datetimeconvert |
"1" |
PHP_INI_ALL |
| mssql.secure_connection |
"0" |
PHP_INI_SYSTEM |
| mysql.allow_persistent |
"1" |
PHP_INI_SYSTEM |
| mysql.max_persistent |
"-1" |
PHP_INI_SYSTEM |
| mysql.max_links |
"-1" |
PHP_INI_SYSTEM |
| mysql.default_host |
NULL |
PHP_INI_ALL |
| mysql.default_user |
NULL |
PHP_INI_ALL |
| mysql.default_password |
NULL |
PHP_INI_ALL |
| mysql.default_port |
NULL |
PHP_INI_ALL |
| mysql.default_socket |
NULL |
PHP_INI_ALL |
| ncurses.value |
"42" |
PHP_INI_ALL |
| ncurses.string |
"foobar" |
PHP_INI_ALL |
| odbc.allow_persistent |
"1" |
PHP_INI_SYSTEM |
| odbc.max_persistent |
"-1" |
PHP_INI_SYSTEM |
| odbc.max_links |
"-1" |
PHP_INI_SYSTEM |
| odbc.default_db |
NULL |
PHP_INI_ALL |
| odbc.default_user |
NULL |
PHP_INI_ALL |
| odbc.default_pw |
NULL |
PHP_INI_ALL |
| odbc.defaultlrl |
"4096" |
PHP_INI_ALL |
| odbc.defaultbinmode |
"1" |
PHP_INI_ALL |
| odbc.check_persistent |
"1" |
PHP_INI_SYSTEM |
| pfpro.defaulthost |
"test.signio.com" |
|
| pfpro.defaulthost |
"test-payflow.verisign.com" |
|
| pfpro.defaultport |
"443" |
PHP_INI_ALL |
| pfpro.defaulttimeout |
"30" |
PHP_INI_ALL |
| pfpro.proxyaddress |
"" |
PHP_INI_ALL |
| pfpro.proxyport |
"" |
PHP_INI_ALL |
| pfpro.proxylogon |
"" |
PHP_INI_ALL |
| pfpro.proxypassword |
"" |
PHP_INI_ALL |
| pgsql.allow_persistent |
"1" |
PHP_INI_SYSTEM |
| pgsql.max_persistent |
"-1" |
PHP_INI_SYSTEM |
| pgsql.max_links |
"-1" |
PHP_INI_SYSTEM |
| pgsql.auto_reset_persistent |
"0" |
PHP_INI_SYSTEM |
| pgsql.ignore_notice |
"0" |
PHP_INI_ALL |
| pgsql.log_notice |
"0" |
PHP_INI_ALL |
| session.save_path |
"/tmp" |
PHP_INI_ALL |
| session.name |
"PHPSESSID" |
PHP_INI_ALL |
| session.save_handler |
"files" |
PHP_INI_ALL |
| session.auto_start |
"0" |
PHP_INI_ALL |
| session.gc_probability |
"1" |
PHP_INI_ALL |
| session.gc_divisor |
"100" |
PHP_INI_ALL |
| session.gc_maxlifetime |
"1440" |
PHP_INI_ALL |
| session.serialize_handler |
"php" |
PHP_INI_ALL |
| session.cookie_lifetime |
"0" |
PHP_INI_ALL |
| session.cookie_path |
"/" |
PHP_INI_ALL |
| session.cookie_domain |
"" |
PHP_INI_ALL |
| session.cookie_secure |
"" |
PHP_INI_ALL |
| session.use_cookies |
"1" |
PHP_INI_ALL |
| session.use_only_cookies |
"0" |
PHP_INI_ALL |
| session.referer_check |
"" |
PHP_INI_ALL |
| session.entropy_file |
"" |
PHP_INI_ALL |
| session.entropy_length |
"0" |
PHP_INI_ALL |
| session.cache_limiter |
"nocache" |
PHP_INI_ALL |
| session.cache_expire |
"180" |
PHP_INI_ALL |
| session.use_trans_sid |
"0" |
PHP_INI_SYSTEM
PHP_INI_PERDIR |
| session.encode_sources |
"globals,track" |
PHP_INI_ALL |
| assert.active |
"1" |
PHP_INI_ALL |
| assert.bail |
"0" |
PHP_INI_ALL |
| assert.warning |
"1" |
PHP_INI_ALL |
| assert.callback |
NULL |
PHP_INI_ALL |
| assert.quiet_eval |
"0" |
PHP_INI_ALL |
| safe_mode_protected_env_vars |
SAFE_MODE_PROTECTED_ENV_VARS |
PHP_INI_SYSTEM |
| safe_mode_allowed_env_vars |
SAFE_MODE_ALLOWED_ENV_VARS |
PHP_INI_SYSTEM |
| url_rewriter.tags |
"a=href,area=href,
frame=src,
form=fakeentry" |
PHP_INI_ALL |
| sybct.allow_persistent |
"1" |
PHP_INI_SYSTEM |
| sybct.max_persistent |
"-1" |
PHP_INI_SYSTEM |
| sybct.max_links |
"-1" |
PHP_INI_SYSTEM |
| sybct.min_server_severity |
"10" |
PHP_INI_ALL |
| sybct.min_client_severity |
"10" |
PHP_INI_ALL |
| sybct.hostname |
NULL |
PHP_INI_ALL |
| vpopmail.directory |
"" |
PHP_INI_ALL |
| zlib.output_compression |
"0" |
PHP_INI_SYSTEM
PHP_INI_PERDIR |
| zlib.output_compression_level |
"-1" |
PHP_INI_ALL |
| define_syslog_variables |
"0" |
PHP_INI_ALL |
| highlight.bg |
HL_BG_COLOR |
PHP_INI_ALL |
| highlight.comment |
HL_COMMENT_COLOR |
PHP_INI_ALL |
| highlight.default |
HL_DEFAULT_COLOR |
PHP_INI_ALL |
| highlight.html |
HL_HTML_COLOR |
PHP_INI_ALL |
| highlight.keyword |
HL_KEYWORD_COLOR |
PHP_INI_ALL |
| highlight.string |
HL_StrING_COLOR |
PHP_INI_ALL |
| allow_call_time_pass_reference |
"1" |
PHP_INI_SYSTEM
PHP_INI_PERDIR |
| asp_tags |
"0" |
PHP_INI_SYSTEM
PHP_INI_PERDIR |
| display_errors |
"1" |
PHP_INI_ALL |
| display_startup_errors |
"0" |
PHP_INI_ALL |
| enable_dl |
"1" |
PHP_INI_SYSTEM |
| expose_php |
"1" |
PHP_INI_SYSTEM |
| html_errors |
"1" |
PHP_INI_ALL |
| xmlrpc_errors |
"0" |
PHP_INI_SYSTEM |
| xmlrpc_error_number |
"0" |
PHP_INI_ALL |
| ignore_user_abort |
"0" |
PHP_INI_ALL |
| implicit_flush |
"0" |
PHP_INI_ALL |
| log_errors |
"0" |
PHP_INI_ALL |
| log_errors_max_len |
"1024" |
PHP_INI_ALL |
| ignore_repeated_errors |
"0" |
PHP_INI_ALL |
| ignore_repeated_source |
"0" |
PHP_INI_ALL |
| magic_quotes_gpc |
"1" |
PHP_INI_PERDIR
PHP_INI_SYSTEM |
| magic_quotes_runtime |
"0" |
PHP_INI_ALL |
| magic_quotes_sybase |
"0" |
PHP_INI_ALL |
| output_buffering |
"0" |
PHP_INI_PERDIR
PHP_INI_SYSTEM |
| output_handler |
NULL |
PHP_INI_PERDIR
PHP_INI_SYSTEM |
| register_argc_argv |
"1" |
PHP_INI_PERDIR
PHP_INI_SYSTEM |
| register_globals |
"0" |
PHP_INI_PERDIR
PHP_INI_SYSTEM |
| safe_mode |
"1" |
PHP_INI_SYSTEM |
| safe_mode |
"0" |
PHP_INI_SYSTEM |
| safe_mode_include_dir |
NULL |
PHP_INI_SYSTEM |
| safe_mode_gid |
"0" |
PHP_INI_SYSTEM |
| short_open_tag |
DEFAULT_SHORT_OPEN_TAG |
PHP_INI_SYSTEM
PHP_INI_PERDIR |
| sql.safe_mode |
"0" |
PHP_INI_SYSTEM |
| track_errors |
"0" |
PHP_INI_ALL |
| y2k_compliance |
"0" |
PHP_INI_ALL |
| unserialize_callback_func |
NULL |
PHP_INI_ALL |
| arg_separator.output |
"&" |
PHP_INI_ALL |
| arg_separator.input |
"&" |
PHP_INI_SYSTEM
PHP_INI_PERDIR |
| auto_append_file |
NULL |
PHP_INI_SYSTEM
PHP_INI_PERDIR |
| auto_prepend_file |
NULL |
PHP_INI_SYSTEM
PHP_INI_PERDIR |
| doc_root |
NULL |
PHP_INI_SYSTEM |
| default_charset |
SAPI_DEFAULT_CHARSET |
PHP_INI_ALL |
| default_mimetype |
SAPI_DEFAULT_MIMETYPE |
PHP_INI_ALL |
| error_log |
NULL |
PHP_INI_ALL |
| extension_dir |
PHP_EXTENSION_DIR |
PHP_INI_SYSTEM |
| gpc_order |
"GPC" |
PHP_INI_ALL |
| include_path |
PHP_INCLUDE_PAth |
PHP_INI_ALL |
| max_execution_time |
"30" |
PHP_INI_ALL |
| open_basedir |
NULL |
PHP_INI_SYSTEM |
| safe_mode_exec_dir |
"1" |
PHP_INI_SYSTEM |
| upload_max_filesize |
"2M" |
PHP_INI_SYSTEM
PHP_INI_PERDIR |
| file_uploads |
"1" |
PHP_INI_SYSTEM |
| post_max_size |
"8M" |
PHP_INI_SYSTEM
PHP_INI_PERDIR |
| upload_tmp_dir |
NULL |
PHP_INI_SYSTEM |
| user_dir |
NULL |
PHP_INI_SYSTEM |
| variables_order |
NULL |
PHP_INI_ALL |
| error_append_string |
NULL |
PHP_INI_ALL |
| error_prepend_string |
NULL |
PHP_INI_ALL |
| SMTP |
"localhost" |
PHP_INI_ALL |
| smtp_port |
25 |
PHP_INI_ALL |
| browscap |
NULL |
PHP_INI_SYSTEM |
| error_reporting |
NULL |
PHP_INI_ALL |
| memory_limit |
"8M" |
PHP_INI_ALL |
| precision |
"14" |
PHP_INI_ALL |
| sendmail_from |
NULL |
PHP_INI_ALL |
| sendmail_path |
DEFAULT_SENDMAIL_PAth |
PHP_INI_SYSTEM |
| disable_classes |
"" |
php.ini only |
| disable_functions |
"" |
php.ini only |
| allow_url_fopen |
"1" |
PHP_INI_ALL |
| always_populate_raw_post_data |
"0" |
PHP_INI_SYSTEM
PHP_INI_PERDIR |
| xbithack |
"0" |
PHP_INI_ALL |
| engine |
"1" |
PHP_INI_ALL |
| last_modified |
"0" |
PHP_INI_ALL |
| child_terminate |
"0" |
PHP_INI_ALL |
| async_send |
"0" |
PHP_INI_ALL |
可操作范围见下表:
| Constant |
Value |
Meaning |
| PHP_INI_USER |
1 |
Entry can be set in user scripts |
| PHP_INI_PERDIR |
2 |
Entry can be set in php.ini, .htaccess or httpd.conf |
| PHP_INI_SYSTEM |
4 |
Entry can be set in php.ini or httpd.conf |
| PHP_INI_ALL |
7 |
Entry can be set anywhere |