【問題】用IIS跑PHP的定義問題



贊助商連結


chan15
2006-03-31, 12:30 PM
在IIS下如果下 $xxx = xxx;的時候好像都會有問題
譬如說
$n = $_POST['n'];
$result = $result+1/$i;
這樣都會出錯

目前找到可行但相當麻煩的solution如下
如果遇到 $_POST['xx'] 或者是 $_GET['xx']在同一頁時
必須先用isset去檢查 不然會Undefined index

如果遇到 $xxx = xxx; 時
要先 global $xxx;
不然也會error

天啊 真是麻煩
不知道是否有更好的solution

贊助商連結


fadoce
2006-03-31, 01:01 PM
我現在的作法是...使用AppServ 2.4.3
使用IIS來跑難免有問題

但實際上在抓變數的時候我也是會先檢查
例如
$myname = "abc";//如果沒有抓到傳來的變數的預設值
if(!empty($_REQUEST["myname "]))
$myname = $_REQUEST["myname "];

不要讓變數的值可能成為null或不確定性變數比較好
這樣也會降低不確定性

chan15
2006-03-31, 01:13 PM
同意

我剛發現在IIS下,東西得先給個定義,不然會error
譬如說

<?php

for($i=1;$i<=10;$i++){

$sum += $i;

}
echo $sum;
?>

error

<?php

$sum = '';
for($i=1;$i<=10;$i++){

$sum += $i;

}
echo $sum;
?>

就正常了 真怪

fadoce
2006-03-31, 09:29 PM
也許是寫程式的習慣吧!
記得在學過VB之後再學Turbo C
最不習慣的一點就是:
VB不需事先定義型別,不須設定預設值也可以work
例如:
  a="aaa"
或 a=123
甚至不宣告而混用,運作過程中是不會出錯的

但在Turbo C中整數型態就只能放整數型態、字串型態只能放字串型態
於是會覺得很不方便
但久了之後就習慣了...
做過程式設計的工作後更確保相類似的習慣
myNameStr一定是字串
myAgeNum一定是數值型態
除了在寫的過程中不會出錯之外
日後的可讀性也很足夠

印象中大部份的直述式語言
如Javascript、actionscript、php、asp
在型別上跟VB一樣沒有要求很高
但因為你現在的狀況是IIS上跑PHP
IIS本身應該並沒有被要求一定要完全符應PHP的語法
因此在型別不確定的情況之下就發生了出包的問題了

也許這樣的一個經驗
可以促使你養成更確保無誤的程式寫作習慣也不一定

門神
2006-03-31, 10:09 PM
FYI

if (phpversion() > "4.0.6") {
$HTTP_POST_FILES = &$_FILES;

或者是

$_file_ = @$HTTP_POST_FILES['file'];

不知這樣寫你們是否看的出來差異

ethanliu
2006-04-01, 10:42 PM
與 iis 無關
你應該先留意一下 error reporting

sfilc
2006-04-18, 04:18 AM
我現在的作法是...使用AppServ 2.4.3
使用IIS來跑難免有問題

但實際上在抓變數的時候我也是會先檢查
例如
$myname = "abc";//如果沒有抓到傳來的變數的預設值
if(!empty($_REQUEST["myname "]))
$myname = $_REQUEST["myname "];

不要讓變數的值可能成為null或不確定性變數比較好
這樣也會降低不確定性
跟IIS無關
請檢查一下你的PHP.INI設定
我忘了他英文怎拼了
反正就是增錯等級就是了
把他調低一點

另外不建議在WINDOWS 上裝APACHE
因為他本來就是專為UNIX-LIFE設計的

提外話:
要在iis上跑php
我建議你不要用他那個安裝程式來裝
因為他都給你用成cgi
cgi只有一個字= 慢

php在IIS上基本上有三種裝法
1.cgi (慢+人多的話會吃暴你的RAM跟CPU)
2.isapi (php支援不完整,裝起來php會把iis搞掛)
3.fastcgi (高效能+穩定)

把php-版本號.zip檔案抓回來
之後看這篇
http://phplens.com/phpeverywhere/fastcgi-php

chan15
2006-04-19, 06:17 AM
跟IIS無關
請檢查一下你的PHP.INI設定
我忘了他英文怎拼了
反正就是增錯等級就是了
把他調低一點

另外不建議在WINDOWS 上裝APACHE
因為他本來就是專為UNIX-LIFE設計的

提外話:
要在iis上跑php
我建議你不要用他那個安裝程式來裝
因為他都給你用成cgi
cgi只有一個字= 慢

php在IIS上基本上有三種裝法
1.cgi (慢+人多的話會吃暴你的RAM跟CPU)
2.isapi (php支援不完整,裝起來php會把iis搞掛)
3.fastcgi (高效能+穩定)

把php-版本號.zip檔案抓回來
之後看這篇
http://phplens.com/phpeverywhere/fastcgi-php

您是說不要裝 appserv還是不要裝php installer?

sfilc
2006-04-22, 09:45 AM
您是說不要裝 appserv還是不要裝php installer?

兩者都有
1.APACHE裝在UNIX-LIFT比較妥當,WINDOWS就....

2.php installer這個自動安裝包是CGI的安裝方式,抓ZIP包回來手動裝