Jump to content

Detecting Cookie Support


Jesdisciple

Recommended Posts

I'm trying to be able to tell if the user's browser supports cookies; I've found such a script for JavaScript but not for PHP. Here's what I have so far:

<?//...function cookies(){	setcookie('TEST', 'test', time() + 60);	$test = $_COOKIE['TEST'];	return isset($test) && $test == 'test';}//...?>

But this always returns false on the first try, then true as I refresh the page until the last placement of the cookie has expired. How can it return true on the first try? (Could I make the PHP delay its retrieval of the cookie?)

Link to comment
Share on other sites

You can't use PHP to set and check a cookie on the same page. A cookie is just a HTTP header that gets sent. When you set a cookie with PHP it adds a cookie header to the output that the browser receives. So the only time the cookie gets set is when output gets sent and the browser receives it. The browser sends the cookie back to the server whenever it makes a request, again as a header. So whenever you run that function the browser has already sent all cookies it has (it has already made the request), and the browser will only set a cookie when it receives the output.So the only way is to set a cookie on one page, redirect, and check if it's set. It's also not a good idea to use a location header when setting a cookie, some browsers will see the location header and ignore everything else and just redirect without setting the cookie. If you set a cookie it's better to use a meta refresh to do the redirect.

Link to comment
Share on other sites

Okay, here's my extremely complicated next try (in which the META tag doesn't work):Relevant fragments of Jesdisciple.php:

<?php$supported = $_GET['supported'];$disabled = $_GET['disabled'];$unsupported = $_GET['unsupported'];if(isset($supported) && isset($unsupported)){	$name = $_GET['name'];	$value = $_GET['value'];	if(isset($name) && isset($text)){		if($_COOKIE[$name] == $text){			header('Location:' . $supported);		}else{			header('Location:' . (isset($disabled) ? $disabled : $unsupported));		}	}elseif(true){		$name = 'TEST';		$value = 'test';		setcookie($name, $value, 360);?><html>	<head><?php		require_once 'file:///C:/wamp/www/php/Jesdisciple.php';?>		<meta http-equiv="refresh" content="2;url=<?php echo SERVER . $_SERVER['REQUEST_URI'] . '&name=' . $name . '&value=' . $value; ?>">	</head>	<body></body></html><?php	}else{		header('Location:' . $unsupported);	}}else{?><html>	<head><?php		require_once 'file:///C:/wamp/www/php/Jesdisciple.php';?>		<title>Error: At minimum, this page requires two URLs, 'supported' and 'unsupported', as GET parameters.</title>	</head>	<body>		Please contact this site's webmaster with the following notice:		<blockquote>			The page at <?php echo $_SERVER['HTTP_REFERER']; ?> provided inadequate parameters for			<?php echo CLIENT . $_SERVER['PHP_SELF']; ?>.		</blockquote>	</body></html><?php}?>

The resulting HTML (after the link) is:

<html>	<head>		<meta http-equiv="refresh" content="2;url=file:///C:/wamp/www/php/projects/cookies/CookieTest.php?supported=C%3A%5Cwamp%5Cwww%5Cphp%5Cprojects%5Ccookies%5Ctest.php?result=supported&unsupported=C%3A%5Cwamp%5Cwww%5Cphp%5Cprojects%5Ccookies%5Ctest.php?result=unsupported&name=TEST&value=test">	</head>	<body></body></html>

So the script detected the necessary parameters (supported and unsupported) to run the test, but the browser didn't obey the META tag and the actual test never started. Is my META wrong?

Link to comment
Share on other sites

You're trying to redirect to a URL starting with file://. PHP won't run if you access it that way, you need to use http://. It's probably better that you don't use the file scheme at all, there's no reason to. You can just declare your SERVER constant as C:\wamp\www, but if you are using that constant to hold the local filesystem path you don't want to redirect to that, you want to redirect to the web server path.

Link to comment
Share on other sites

Oops... I knew that (the client needs HTTP), but didn't notice it. Thanks. :) Now the page ends at http:// localhost/php/projects/cookies/test.php?result=unsupported - yet I know that my browser supports cookies and that they aren't disabled. It arrives at this URL by the conditional path "if-if-else" in CookieTest.php (look for the two consecutive, left-aligned comments).EDIT: Well, it did go to said URL, but I seem to have introduced a new bug; it still goes through "if-if-else", but never redirects.CookieTest.php:

<?phprequire_once 'C:/wamp/www/php/Jesdisciple.php';$supported = $_GET['supported'];$disabled = $_GET['disabled'];$unsupported = $_GET['unsupported'];if(isset($supported) && isset($unsupported)){	$name = $_GET['name'];	$value = $_GET['value'];	if(isset($name) && isset($value)){		if($_COOKIE[$name] == $value){			header('Location:' . $supported);		}else{//uncomment to confirm my account://echo 'yup';			header('Location:' . (isset($disabled) ? $disabled : $unsupported));		}	}elseif(true){		$name = 'TEST';		$value = 'test';		setcookie($name, $value, 360);?><html>	<head>		<meta http-equiv="refresh" content="0;url=<?php echo CLIENT . $_SERVER['REQUEST_URI'] . '&name=' . $name . '&value=' . $value; ?>">	</head>	<body></body></html><?php	}else{		header('Location:' . $unsupported);	}}else{?><html>	<head>		<title>Error: At minimum, this page requires two URLs, 'supported' and 'unsupported', as GET parameters.</title>	</head>	<body>		Please contact this site's webmaster with the following notice:		<blockquote>			The page at <?php echo $_SERVER['HTTP_REFERER']; ?> provided inadequate parameters for			<?php echo CLIENT . $_SERVER['PHP_SELF']; ?>.		</blockquote>	</body></html><?php}?>

Link to comment
Share on other sites

First, after you send a location header use exit to stop the script. There's no point in continuing if you're going to redirect. Second, the expire parameter for the cookie is set too low, the cookie will expire immediately. The expire parameter should be a Unix timestamp, so it is the number of seconds since 1/1/1970. So you are saying that the cookie expires 6 minutes after 1/1/1970, or that it's already expired. Check the setcookie reference page for more information:http://www.php.net/manual/en/function.setcookie.php

Link to comment
Share on other sites

Now it tries to return the right answer, but something's still wrong with my call to header() - and I can't find any clues as to what it is.CookieTest.php

<?phprequire_once 'C:/wamp/www/php/Jesdisciple.php';$supported = $_GET['supported'];$disabled = $_GET['disabled'];$unsupported = $_GET['unsupported'];if(isset($supported) && isset($unsupported)){	$name = $_GET['name'];	$value = $_GET['value'];	if(isset($name) && isset($value)){		if($_COOKIE[$name] == $value){//uncomment to confirm my account://echo $supported;			header('Location:' . $supported);			exit(0);		}else{			header('Location:' . (isset($disabled) ? $disabled : $unsupported));			exit(0);		}	}elseif(true){		$name = 'TEST';		$value = 'test';		setcookie($name, $value, time() + 360);?><html>	<head>		<meta http-equiv="refresh" content="0;url=<?php echo CLIENT . $_SERVER['REQUEST_URI'] . '&name=' . $name . '&value=' . $value; ?>">	</head>	<body></body></html><?php	}else{		header('Location:' . $unsupported);		exit(0);	}}else{?><html>	<head>		<title>Error: At minimum, this page requires two URLs, 'supported' and 'unsupported', as GET parameters.</title>	</head>	<body>		Please contact this site's webmaster with the following notice:		<blockquote>			The page at <?php echo $_SERVER['HTTP_REFERER']; ?> provided inadequate parameters for			<?php echo CLIENT . $_SERVER['PHP_SELF']; ?>.		</blockquote>	</body></html><?php}?>

Link to comment
Share on other sites

Eureka! I hadn't known about error_reporting(E_ALL)... When prepended to my PHP, it changes the HTML source from the nullstring to:

<br /><b>Notice</b>:  Undefined index:  disabled in <b>C:\wamp\www\library\projects\php\cookies\CookieTest.php</b> on line <b>5</b><br /><br /><b>Notice</b>:  Undefined index:  TEST in <b>C:\wamp\www\library\projects\php\cookies\CookieTest.php</b> on line <b>11</b><br /><br /><b>Warning</b>:  Cannot modify header information - headers already sent by (output started at C:\wamp\www\library\projects\php\cookies\CookieTest.php:5) in <b>C:\wamp\www\library\projects\php\cookies\CookieTest.php</b> on line <b>17</b><br />

And this reveals that the browser didn't consider the page refresh to be a true redirect, but a simple modification of the URL.

Link to comment
Share on other sites

And I'm right back in the same hole, except the same shovel won't dig me out. The chain dead-ends at the pretty permalink of http://localhost/library/projects/php/cook...ookies/test.php (Is it possible that the slashes at the end are bugging the script, despite being urlencode()'d?)Relevant fragments of Jesdisciple.php:

<?php//The root directory, according to the client.define('CLIENT', 'http://localhost');//The root directory, according to the server.define('SERVER', 'C:/wamp/www');class Jesdisciple{	public static function cookies(){		$key = 'TEST';		$value = 'test';		$url = CLIENT . '/library/projects/php/cookies/CookieTest.php';				setcookie($key, $value, time() + 360);?><html>	<head>		<meta http-equiv="refresh" content="0;url=<?php echo self::appendGET($url, array('key=' . $key, 'value=' . $value, 'url=' . SERVER . $_SERVER['REQUEST_URI'])); ?>">	</head>	<body></body></html><?php	}	public static function appendPOST($query, array $newParams){		$params = explode('&', $query);		if(count($params) == 1){			return $params[0];		}		foreach($param as $newParams){			array_push($params, $param);		}		return implode('&', $params);	}	public static function appendGET($url, array $newParams){		$question = strpos($url, '?');		if($question !== false){			$query = self::appendPOST(substr($url, $question + 1), $newParams);			$url = substr($url, 0, $question);		}else{			$query = implode('&', $newParams);		}		return $url . '?' . $query;	}}?>

test.php:

<?php	error_reporting(E_ALL);	require_once 'C:/wamp/www/library/php/Jesdisciple.php';	if(isset($_GET['cookies'])){		$cookies = $_GET['cookies'];	}else{		Jesdisciple::cookies();	}?><html>	<head>		<title>Testing, 1, 2... <?php if(isset($cookies)){ echo $cookies . '!'; } ?></title>	</head>	<body>		<a href="CookieTest.php?supported=<?php $file = SERVER . $_SERVER['REQUEST_URI']; echo urlencode($file . '?result=supported'); ?>&unsupported=<?php echo urlencode($file . '?result=unsupported'); ?>">GO!</a>	</body></html>

CookieTest.php

<?phprequire_once 'C:/wamp/www/library/php/Jesdisciple.php';$key = urldecode($_GET['key']);$value = urldecode($_GET['value']);$url = urldecode($_GET['url']);if(isset($key) && isset($value) && isset($url)){	if(false){		$cookies = 'unsupported';	}elseif(isset($_COOKIE[$key]) && $_COOKIE[$key] == $value){		$cookies = 'supported';	}else{		$cookies = 'disabled';	}	header('Location: ' . Jesdisciple::appendGET($url, array('cookies=' . $cookies)));	exit(0);}else{	$params = array_keys($_GET);	$glue = count($params) > 2 ? '</i>, <i>' : '</i> and <i>';	$keyString = count($params) === 0 ? 'none ' : 'only <i>' . implode($glue, $params) . '</i> ';	$keyString .= count($params) === 1 ? 'was' : 'were';?><html>	<head>		<title>Error: At minimum, this page requires two strings and a URL, 'key', 'value', and 'url' respectively, as GET parameters.</title>	</head>	<body>		Please contact this site's webmaster with the following notice:		<blockquote>			The page at <?php echo $_SERVER['HTTP_REFERER']; ?> provided inadequate parameters for			<?php echo CLIENT . $_SERVER['PHP_SELF']; ?>. At minimum, this page requires two strings			and a URL, <i>key</i>, <i>value</i>, and <i>url</i> respectively, as GET parameters, but			<?php echo $keyString; ?> provided.		</blockquote>	</body></html><?php}?>

Link to comment
Share on other sites

And this reveals that the browser didn't consider the page refresh to be a true redirect, but a simple modification of the URL.
It doesn't indicate anything like that, there's not more then one type of redirect using a header. The first two notices are saying that you are trying to use an array index that is not defined, like trying to check the value of $test['key'] without defining it first. The third error about the header is there because of the first two messages. The first two messages cause all headers to be sent and then trying to manually send the location header causes the other error. This error:<b>Notice</b>: Undefined index: disabled in <b>C:\wamp\www\library\projects\php\cookies\CookieTest.php</b> on line <b>5</b>Is relating to this line:$disabled = $_GET['disabled'];It means there is no element in $_GET called "disabled". You can use isset to get that message to not appear.
$disabled = isset($_GET['disabled']) ? $_GET['disabled'] : '';

The second message about TEST being undefined relates to this line:if($_COOKIE[$name] == $value){You can use isset there too.if (isset($_COOKIE[$name]) && $_COOKIE[$name] == $value)Also, you're not using isset correctly here:$key = urldecode($_GET['key']);$value = urldecode($_GET['value']);$url = urldecode($_GET['url']);if(isset($key) && isset($value) && isset($url)){You're using isset to check the variables that you just set. Obviously they are all going to be set, you just set them. But that doesn't mean that they were set in $_GET, you never check for that. Also, PHP will automatically URL-decode things for you, you don't need to do that yourself. Using urldecode will try to decode an already-decoded string and might cause problems.All of this seems like a really, really complicated way to check for cookie support. I don't know why you're using a class to begin with, or why you're doing things like sending URLs to different pages as querystring variables, or what the point of the appendPOST and appendGET methods are (and why they're static). These two pages will show you what all the cookies are that were sent to the page:

<?phpsetcookie("cookie1", "value1", time() + (60*60*24), '/');setcookie("cookie2", "value2", time() + (60*60*24), '/');setcookie("cookie3", "value3", time() + (60*60*24), '/');?><html>  <head>	<title>Cookie Test</title>	<meta http-equiv="refresh" content="1;url=page2.php" />  </head>  <body>	Redirecting...  </body></html>

<?phpecho "Cookies: <br><pre>";print_r($_COOKIE);echo "</pre>";?>

You can use that to set some cookies on one page and check them on the next page. I might be missing the point, but it seems like you're trying to develop an incredibly complex way to do a simple task.

Link to comment
Share on other sites

It doesn't indicate anything like that, there's not more then one type of redirect using a header. The first two notices are saying that you are trying to use an array index that is not defined, like trying to check the value of $test['key'] without defining it first. The third error about the header is there because of the first two messages. The first two messages cause all headers to be sent and then trying to manually send the location header causes the other error. [middle removed]You're using isset to check the variables that you just set. Obviously they are all going to be set, you just set them. But that doesn't mean that they were set in $_GET, you never check for that.
So isset($var) doesn't work like JavaScript's var === undefined. I'm used to the state of being "unset" being represented by a unique, transferable value, so I was expecting $var1 = $var2; if(isset($var1) === isset($var2)){/* ... */} to evaluate to true in all cases with no errors, as its equivalent does in JavaScript. And I wanted to use the $var form, rather than the $_GET['var'] form, for testing because it's much shorter.It's kind of like the idea behind functions: Why write the same long set of instructions more than once if you can name that set of instructions and use the name instead? So the only time I use $_GET for each variable above is the naming stage, and I (incorrectly) expected the name to be treated as interchangeable with the instructions.
Also, PHP will automatically URL-decode things for you, you don't need to do that yourself. Using urldecode will try to decode an already-decoded string and might cause problems.
Before I was urldecode()'ing the variables, the encoded URL value for $_GET['url'] was generating an error in the call to header()... But that second version of the script is a non-issue, at least for now, because I've reverted to the older one and stored the new one in a dummy file, upon the realization that the older one might still work.
All of this seems like a really, really complicated way to check for cookie support.
It probably is, and I'll look at refining it when it works.
I don't know why you're using a class to begin with,
As noted (I think) in the first post, that class is my general-purpose toolkit - the PHP equivalent of Jesdisciple.js.php. It provides a namespace for my most commonly used functions, and carries with it basic stuff like constants and functions that I would rather have global than statically classed.
or why you're doing things like sending URLs to different pages as querystring variables,
This project (for lack of a more precise term) is supposed to operate like a function - take parameters (representing what to do in the possible cases), determine the nature of the user's cookie support, and return a value (by following the instructions for the case) - in a reusable way, so the same page can detect cookie support for any page which requests it.
or what the point of the appendPOST and appendGET methods are (and why they're static).
When I was debugging this project and the result was coming back as "unsupported", clicking the "GO!" link made the URL gain "?result=unsupported" each time, so the query ended up looking like "?result=unsupported?result=unsupported?result=unsupported", which I didn't think would work if I were to try retrieving the latest value for $_GET['result'], and I realized that this problem would transfer to any page which already had a GET querystring when it called the page-function. So I worked out a way to append to a querystring (i.e., "?result=unsupported&result=unsupported&result=unsupported") rather than starting it over.By the way, yes, I know (or at least assume) that the rightmost value would overwrite the others, but, in my case, that's perfectly fine because the others are outdated. I also realized that I don't need to explode the old querystring, as I can just implode it with the new one after getting rid of trailing '&'s.As to why the functions are static, I didn't feel like making a new Jesdisciple object every time I wanted my functions, so I fixed it so I could have the namespace for the function without instantiating the class.
These two pages will show you what all the cookies are that were sent to the page:
You can use that to set some cookies on one page and check them on the next page.  I might be missing the point, but it seems like you're trying to develop an incredibly complex way to do a simple task.This requires me to include that code into two pages every time I want to check for cookies, and to end up on a different page, when I get the answer, than the one I was on when I asked. I would rather ask and be answered on the same page and in a reusable way.Before I start back to the debugging discussion, do you have any more bones to pick with my methodology? I appreciate the constructive criticism.
Link to comment
Share on other sites

So isset($var) doesn't work like JavaScript's var === undefined. I'm used to the state of being "unset" being represented by a unique, transferable value, so I was expecting $var1 = $var2; if(isset($var1) === isset($var2)){/* ... */} to evaluate to true in all cases with no errors, as its equivalent does in JavaScript. And I wanted to use the $var form, rather than the $_GET['var'] form, for testing because it's much shorter.
Look into references. You can set a reference to the value in $_GET, but if you just use the assignment operator it assigns the value, regardless of whether or not it has been set. The value for something that has not been set is the null value. The variable will be assigned the null value, if you want it to point to the same memory location as the variable in $_GET does then you can use a reference instead. The isset function only checks if a variable has been set, it does not check the value of that variable. When you use assignment you set a variable, regardless of what the value is. Setting a variable to the null value means that isset returns true, because the variable has been set, even though the value indicates that it has no value.
As to why the functions are static, I didn't feel like making a new Jesdisciple object every time I wanted my functions, so I fixed it so I could have the namespace for the function without instantiating the class.
I was under the impression that the static keyword in PHP means the same thing that it does in C++ or Java, and that the scope resolution operator (::) could be used if you didn't want to instantiate the class. Apparently that's not the case, PHP has a different use for static.
This requires me to include that code into two pages every time I want to check for cookies, and to end up on a different page when I get the answer than the one I was on when I asked. I would rather ask and be answered on the same page and in a reusable way.
I was just using that as an example for how easy it is to check for cookies. If your method isn't working then one of the steps you put in the middle is causing problems. For example, there's not really a point to pass the name and value of the cookie between pages to check, it would be simpler to just use hardcoded values for them. The pages to redirect to can be static constants in your class. I'm just trying to simplify how this is working. Right now it seems too complex. The answer would seem to be to remove the complexity, it's not necessary.Possibly an easier way to check for cookies is to make sure that session.use_only_cookies is enabled and to use the session to test. PHP will send the cookie automatically. You can start the session on one page and set a value, and check if the variable is set on another page. That would test for cookie support.
<?phpini_set("session.use_cookies", 1);ini_set("session.use_only_cookies", 1);session_start();if (isset($_GET['test'])){  if (isset($_SESSION['test']))	echo "supported";  else	echo "unsupported";}else{  $_SESSION['test'] = 'test';  ?>  <html><head><title>Redirect</title><meta http-equiv="refresh" content="0;url=<?php echo $PHP_SELF;?>?test=test"></head><body>Stand By</body></html>  <?php}?>

It doesn't need to be any more complex then that. If it's not working, remove complexity until it works. Keep it simple. Reusability is a good thing but I tend to value clarity and efficiency over reusability.

Link to comment
Share on other sites

Look into references. You can set a reference to the value in $_GET, but if you just use the assignment operator it assigns the value, regardless of whether or not it has been set. The value for something that has not been set is the null value. The variable will be assigned the null value, if you want it to point to the same memory location as the variable in $_GET does then you can use a reference instead. The isset function only checks if a variable has been set, it does not check the value of that variable. When you use assignment you set a variable, regardless of what the value is. Setting a variable to the null value means that isset returns true, because the variable has been set, even though the value indicates that it has no value.
My code has been so modified.
I was under the impression that the static keyword in PHP means the same thing that it does in C++ or Java, and that the scope resolution operator (::) could be used if you didn't want to instantiate the class. Apparently that's not the case, PHP has a different use for static.
I don't understand what you mean here... Doesn't "static" mean you don't need an instance to get to any members declared to be so in all languages? (Are you thinking of "static" as you use it below, synonymous with "constant"? As class members go, it means constant relative to the class and independent of its instances. The scope resolution operator is used when one is accessing a static member - that is, in languages that use it.)
I was just using that as an example for how easy it is to check for cookies. If your method isn't working then one of the steps you put in the middle is causing problems. For example, there's not really a point to pass the name and value of the cookie between pages to check, it would be simpler to just use hardcoded values for them. The pages to redirect to can be static constants in your class. I'm just trying to simplify how this is working. Right now it seems too complex. The answer would seem to be to remove the complexity, it's not necessary.Possibly an easier way to check for cookies is to make sure that session.use_only_cookies is enabled and to use the session to test. PHP will send the cookie automatically. You can start the session on one page and set a value, and check if the variable is set on another page. That would test for cookie support.
It doesn't need to be any more complex then that.  If it's not working, remove complexity until it works.  Keep it simple.  Reusability is a good thing but I tend to value clarity and efficiency over reusability.That works; thanks. I still don't get why the call to [i]header()[/i] was causing so much trouble...Now for a non-programming problem related (by browscap.ini) to this issue:
Configuration File (php.ini) Path . . C:\WINDOWSLoaded Configuration File . . . . . . . C:\wamp\Apache2\bin\php.ini
I need to make these directories match. I would rather change the path than move the file, but I don't know how to do either. (I already copied php.ini to C:\WINDOWS, but it didn't do any good.) Has anyone here done this before?
Link to comment
Share on other sites

I don't understand what you mean here... Doesn't "static" mean you don't need an instance to get to any members declared to be so in all languages? (Are you thinking of "static" as you use it below, synonymous with "constant"? As class members go, it means constant relative to the class and independent of its instances. The scope resolution operator is used when one is accessing a static member - that is, in languages that use it.)
I'm confusing myself now. I was thinking of a static variable in C++ and somehow translated that to functions.
int func (int n){  static int i = 0;  i += n;  return i;}

A function like that in C++ will retain the value of i as many times as you call it, it will just keep adding the number you passed. So this:func(1);func(2);func(3);func(4);would eventually return 10, because that's the sum of the parameters. The static variable doesn't lose it's value when the function ends.You can see the order that PHP checks for the configuration file here:http://www.php.net/manual/en/configuration...figuration.file

Link to comment
Share on other sites

I'm confusing myself now. I was thinking of a static variable in C++ and somehow translated that to functions.
A function like that in C++ will retain the value of i as many times as you call it, it will just keep adding the number you passed.  So this ... would eventually return 10, because that's the sum of the parameters.  The static variable doesn't lose it's value when the function ends.PHP mimics this functionality; see http://www.php.net/manual/en/language.variables.scope.php. (Use Ctrl+F "static" to find it.)
You can see the order that PHP checks for the configuration file here: http://www.php.net/manual/en/configuration...figuration.file
So do I need to set a registery key...?
Link to comment
Share on other sites

You can set a registry key, or use an evironment variable, or put the file in the web server directory or PHP directory or the Windows directory. On my home machine I use an environment variable. I have the PHPRC environment variable set to c:\php because that's where I installed PHP. To get to the environment variables you can right-click on My Computer and choose Properties, then Advanced, then the Environment Variables button. Mine is a system variable.

Link to comment
Share on other sites

PHPRC - C:\wamp\Apache2\bin
Configuration File (php.ini) Path . . . C:\WINDOWSLoaded Configuration File . . . . . . . . C:\wamp\Apache2\bin\php.ini
Warning: get_browser() [function.get-browser]: browscap ini directive not set. in C:\wamp\www\library\php\Jesdisciple.php on line 178
What'd I miss?
Link to comment
Share on other sites

Wait... Shouldn't phpinfo() say:

Configuration File (php.ini) Path . . . C:\wamp\Apache2\bin
? I don't think it's even finding php.ini (so what php.ini says is irrelevant for now)...
Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...