Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
Pile Of Garbage
May 28, 2007



Good Sphere posted:

Thanks for the suggestions. They got Kamatera Ubuntu server with nginx. I logged into Kamatera's dashboard for the account, and ssh'd in Mac OS's Terminal. I don't know where to even start. I'm so used to using an ftp client and the like, and I don't even know how with this yet, or if I should. A new frontier for me.

If you can SSH you can usually SFTP. Just connect with your FTP client of choice on port 22.

Adbot
ADBOT LOVES YOU

Good Sphere
Jun 16, 2018

Pile Of Garbage posted:

If you can SSH you can usually SFTP. Just connect with your FTP client of choice on port 22.

Oh duh :doh:

I wasn't using the right username. Thank you!

joebuddah
Jan 30, 2005
What sqlsrv fetch command do I need to use for json data?

The query i am using is


code:

select
x,
y,
tooltip

from
mytable
for json auto

I want to use the results to populate a highchart table.


Ive tried both fetch_array and object. When I use echo to populate the highchart data values.

ToxicFrog
Apr 26, 2008


I'm not a PHP toucher by trade, but I've ended up having to debug some stuff written in PHP and have a hopefully quick and stupid question:

Given copy('some/relative/path', 'destination'), what's the source path relative to? Because I would expect either __FILE__ or $PWD, but the way this thing is behaving it doesn't seem to be either of them -- the file containing the copy() call is in /srv/foo/plugins, $PWD is /srv/foo, and looking at strace(), the call to copy() is trying to read from the directory where index.php is installed (which is completely different, it's over in /nix/store). Is there some sort of implicit "document root" in PHP that it gets from the web server and is trying to read from?

McGlockenshire
Dec 16, 2005

GOLLOCKS!
Wrap those filenames in realpath() to figure out where it thinks they should be.

The path should be relative to the pwd, but you might not be where you think you are. Check getcwd() to make sure.

Agrikk
Oct 17, 2003

Take care with that! We have not fully ascertained its function, and the ticking is accelerating.

joebuddah posted:

What sqlsrv fetch command do I need to use for json data?

The query i am using is


code:
select
x,
y,
tooltip

from
mytable
for json auto
I want to use the results to populate a highchart table.


Ive tried both fetch_array and object. When I use echo to populate the highchart data values.

I don’t understand.

Are you asking how to import a JSON document into SQL Server? Or how to pull data from SQL Server as JSON to consume?

Hadlock
Nov 9, 2004

SCP is another option for moving files around, syntax is widely used/copied so it's not a terrible tool to use, many systems come with it preinstalled

Also if you want to get crazy, there's Magic Wormhole which is pretty neat, there's an easier-to-install version called Croc: https://github.com/schollz/croc

I agree with the other guy, get that poo poo on AWS, it's easier to administrate + looks good on your resume

Agrikk
Oct 17, 2003

Take care with that! We have not fully ascertained its function, and the ticking is accelerating.
Can someone help me with a check to see if a row is complete?

I have a file of tab separated values, and some rows are incomplete, which breaks my processing. How can I check to see if the row is incomplete so I can do something else with it?

code:
user1 \t 123 \t data1 \t data2 \n        \\good
user2 \t 634 \t data3 \t data45 \n      \\good
\t 273 \t data7 \t data34 \n             \\bad
984 \t string1 \t string2 \n               \\bad
user3 \t 483 \t data55 \t data78 \n     \\good

Tei
Feb 19, 2011
Probation
Can't post for 7 days!
Style question.

I generally do procedures like this

code:
function doSomethingWithBar( $bar_id ){
  return $whatever;
}
but I wonder if I should use objects more, since we have ways to syntactically force a type, and that means less bugs

code:
function doSomethingWithBar( Bar $bar ){
  return $whatever;
}
this would make using this a bit more verbose

code:
doSomething ( Bar::find( $bar_id ) );
or just
doSomething($bar) 
instead of
code:
$bar_id = $bar->id;
doSomething( $bar_id )
What people think is a better idea?

-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ---

Agrikk posted:

Can someone help me with a check to see if a row is complete?

I have a file of tab separated values, and some rows are incomplete, which breaks my processing. How can I check to see if the row is incomplete so I can do something else with it?

code:
user1 \t 123 \t data1 \t data2 \n        \\good
user2 \t 634 \t data3 \t data45 \n      \\good
\t 273 \t data7 \t data34 \n             \\bad
984 \t string1 \t string2 \n               \\bad
user3 \t 483 \t data55 \t data78 \n     \\good

other than comparing the value to null? I figure there are 9 ways to do it simply by following what seems to make more sense, but you need a more advanced answer (with Regex maybe?) that I can't provide

Tei
Feb 19, 2011
Probation
Can't post for 7 days!
After a second through. Is better to pass the id instead of the object, so the caller don't need to know about things he can live withouth knowing.
And because is good for code to be lazy and pass the buck to other code. The caller would need to do extra work.

duz
Jul 11, 2005

Come on Ilhan, lets go bag us a shitpost


It depends on what it's doing with the information and what other things will need to do that. If the caller doesn't even have it as an object then yeah, I don't bother creating it just to pass it for the callee to just pull that single value back out.


Agrikk posted:

Can someone help me with a check to see if a row is complete?

I have a file of tab separated values, and some rows are incomplete, which breaks my processing. How can I check to see if the row is incomplete so I can do something else with it?

If you don't want to iterate over the pieces then you'll need a regex. Something like preg_match('/([^\t]+(\t|$)){4}/', $line, $output);

22 Eargesplitten
Oct 10, 2010



Are there any major security issues with the latest version of PHP 7.0? I see that 7.2 exists, but I'm not sure if the current software I'm running will work with it, and I'd rather not risk breaking anything if there's no security issues. I can find security flaws doing a search on Google but I don't know which have been patched and which are still out there.

YO MAMA HEAD
Sep 11, 2007

https://www.php.net/supported-versions.php

7.0 is EOL'd. I'd say upgrade to 7.4

22 Eargesplitten
Oct 10, 2010



Well crap, will do. I might have to do 7.2 though, it looks like the Amazon Linux version I'm using only has 7.2 from the package options I remember. I'll just take a snapshot of the instance and roll it back if it fails.

Impotence
Nov 8, 2010
Lipstick Apathy

22 Eargesplitten posted:

Well crap, will do. I might have to do 7.2 though, it looks like the Amazon Linux version I'm using only has 7.2 from the package options I remember. I'll just take a snapshot of the instance and roll it back if it fails.

At the very least 7.2 has a few months left and isn't long-dead levels of EOL.

Master_Odin
Apr 15, 2010

My spear never misses its mark...

ladies

22 Eargesplitten posted:

Are there any major security issues with the latest version of PHP 7.0? I see that 7.2 exists, but I'm not sure if the current software I'm running will work with it, and I'd rather not risk breaking anything if there's no security issues. I can find security flaws doing a search on Google but I don't know which have been patched and which are still out there.

https://github.com/PHPCompatibility/PHPCompatibility is a good library to help alleviate some of the pain of upgrading PHP versions.

Zamujasa
Oct 27, 2010



Bread Liar

Agrikk posted:

Can someone help me with a check to see if a row is complete?

I have a file of tab separated values, and some rows are incomplete, which breaks my processing. How can I check to see if the row is incomplete so I can do something else with it?

code:
user1 \t 123 \t data1 \t data2 \n        \\good
user2 \t 634 \t data3 \t data45 \n      \\good
\t 273 \t data7 \t data34 \n             \\bad
984 \t string1 \t string2 \n               \\bad
user3 \t 483 \t data55 \t data78 \n     \\good

I'm assuming you're using some combination of explode to break out the values; in that case you could just... check if they're broken before processing:

php:
<?php
 $data "a\tb\tc\n\tb\tc\na\tb\na\tb\tc\n";
 
 $a explode("\n"$data);
 foreach ($a as $l) {
   $la explode("\t"$a);
   if (count($la) < || $la[0] == "" || $la[1] == "" || $la[2] == "") {
     // do something else with this line, which sucks and is broken
    continue;
   }

  // do what you do for normal lines
}

This is a gross example, but it gets the job done. (* I didn't test this because I wrote it in a forum post.)


Tei posted:

After a second through. Is better to pass the id instead of the object, so the caller don't need to know about things he can live withouth knowing.
And because is good for code to be lazy and pass the buck to other code. The caller would need to do extra work.

Given a choice between "public function doThingWithBar(\Bar $bar)" and "public function doThingWithBarId($id)" I'd say you should prefer the former in all cases if only because it guards against something that isn't a Bar id getting in there.

There's other value, but that's the easiest one to explain.

Zamujasa
Oct 27, 2010



Bread Liar

rt4 posted:

Use any VPS you like. Check AwfulMart for some decent hosts with goon discounts.

PHP is not well suited to long-running processes. Writing the main app in PHP is usually not a terrible idea, but use something else for the websocket. Javascript is a popular choice, although it's a massive footgun. I'd pick Go.

Also this is way, way late, but as someone who has written several long-running processes (some that have been running for multiple months and in one case literal years): php isn't really any worse than anything else for running long-running processes, it's just that the way you build a long-running task is a lot different than the way you write normal ones.

Impotence
Nov 8, 2010
Lipstick Apathy

Zamujasa posted:

Also this is way, way late, but as someone who has written several long-running processes (some that have been running for multiple months and in one case literal years): php isn't really any worse than anything else for running long-running processes, it's just that the way you build a long-running task is a lot different than the way you write normal ones.

I have quite a few PHP "workers" (that read off redis queues), and I don't see it being much different than node. You just have some kind of forked off child or blocking loop most of the time, instead of a top-down render resulting in stdout (to a page)

It is bizarre to start with though, as someone explicitly used to writing PHP as a "page"

Tei
Feb 19, 2011
Probation
Can't post for 7 days!

Zamujasa posted:

Given a choice between "public function doThingWithBar(\Bar $bar)" and "public function doThingWithBarId($id)" I'd say you should prefer the former in all cases if only because it guards against something that isn't a Bar id getting in there.

There's other value, but that's the easiest one to explain.

I like this argument.

Zamujasa
Oct 27, 2010



Bread Liar

Biowarfare posted:

I have quite a few PHP "workers" (that read off redis queues), and I don't see it being much different than node. You just have some kind of forked off child or blocking loop most of the time, instead of a top-down render resulting in stdout (to a page)

It is bizarre to start with though, as someone explicitly used to writing PHP as a "page"

I have a few that poll a database (someone else's bad decision) every second and write to some network ports, as well as another set that acts as a server/translator for some networked devices. Reads input, translates it into usable data, then pushes it out to other endpoints. Both of these tend to run for months if left undisturbed, and the only reason they don't last longer is because "make them recover from network errors" has never been in the time budget :saddowns:


I like php just because it's easy to get started with and there's no gigantic pile of dependencies or requirements just to begin. Most of it is either just built in or in one of the typically-bundled extensions. You don't need to import 20 modules just to get printf.

(I say this, then I was reviewing a new hire's 'code challenge' which involved 200 MB of php and node modules for what took about 30 lines of raw PHP :suicide: )

ModeSix
Mar 14, 2009

I'm having a hard time passing an array of values via POST. Now you might say "wow you're dumb" and maybe I am, but let me explain.

I am using jQuery on a page to add some additional rows to a table within a form that gets submitted, the number of rows needs to be dynamic and reloading the page and adding it via php isn't an option as there's some pretty heavy lifting being done on this page and it would take 5-10 seconds each time they wanted to add a new input field.

So I've worked around this by using jQuery. Why jQuery you ask? This has to run in old as balls browsers so I can't use something else.

Here is the situation so far.

When I post it will pass the value in the first row of the table, naturally this row exists within the hard coded PHP as it's the reference row.

I'm adding additional rows into the DOM using this handy little script:

code:
<script type="text/javascript">
$(document).ready(function(){
    var addButton = $('.add_button'); //Add button selector
    var x = 1; //Initial field counter is 1
    var fieldHTML = '<tr id="rw'+ x +'"><td><input type="text" name="additional_items[]" /></td><td><a href="javascript:void(0);" class="remove_button" title="Remove Field"><img src="remove-icon.png" style="width:24px;height:24px;"/></a></td></tr>'; //New input field html

    //Once add button is clicked
    $(addButton).click(function(){
        //Check maximum number of input fields
        if(x){
            x++; //Increment field counter
            $('#add_table tr:last').after(fieldHTML); //Add field html
        }
    });

    //Once remove button is clicked
    $(this).on('click', '.remove_button', function(e){
        e.preventDefault();
        $(this).parents('tr:first').remove(); //Remove field html
        x--; //Decrement field counter
    });
});
</script>
And I can inspect them in Chrome inspector and they appear properly.

Is it that a POST won't pick up these fields that are added using jQuery or are they just not formatted properly?

The hardcoded row looks like this in my html file:
code:
<tr>
                 <td><input type="text" name="additional_items[]" /></td>
                 <td style="vertical-align:middle;"><a href="javascript:void(0);" class="add_button" title="Add field"><img src="add-icon.png" style="width:24px;height:24px;" /></a></td>
</tr>
This is of course encapsulated within my <form> fields and it adds the new row directly below what you see above in the DOM.

Please, any assistance would be hugely helpful as this project is due by EOD Sunday and this is really my last blocker before I submit it for client approval.

Banditu
Mar 16, 2009
Hello Mode6,

It works for me when using the code you posted.

So maybe the issue is somewhere else?



ModeSix
Mar 14, 2009

Banditu posted:

Hello Mode6,

It works for me when using the code you posted.

So maybe the issue is somewhere else?





Hm. Ok interesting. How are you picking it up in the $_POST on the receiving page?

Banditu
Mar 16, 2009
To check the value I just used print_r :

php:
<?php
      print_r($_POST['additional_items']);
?>

ModeSix
Mar 14, 2009

Banditu posted:

To check the value I just used print_r :

php:
<?php
      print_r($_POST['additional_items']);
?>


Awesome. I've been checking it the same way and only getting one of the values.

Something fishy going on with this.

Edit: turns out I'm just bad at html and had two opening body tags which may or may not have been causing it not to work. Removed the additional body tags and made the form tag outside the table instead of inside and now it works. Not sure which is the reason but it works.

Thanks for validating that it was a me issue not a code issue. Really helped.

ModeSix fucked around with this message at 14:47 on Jun 27, 2020

Tei
Feb 19, 2011
Probation
Can't post for 7 days!
The moment you are concatenating strings to make html in javascript,. is the moment you need to bring a simple template engine, like mustache (imo). It may be overblow at first, but if the code grown, it will grown into something that will make that grown easy to understand and under control.

kiwid
Sep 30, 2013

This might be better off asked in the SQL/database threads but I'll try here first.

Let's say I've built a todo/task tracking application. I now want to add the ability to have scheduled or recurring tasks and I'm not sure how to model this in the database or how to implement this in the backend.

On the front end it would basically allow a user to do the following:

- Schedule a task into the future one time
- Repeat tasks every __ days
- Repeat a task every week on a specific day
- Repeat a task every month on a specific day or the first/second/etc day/week of the month

These are non-technical users so asking for a cron statement isn't going to work. How would I model this in the database and consume it?

Tei
Feb 19, 2011
Probation
Can't post for 7 days!

kiwid posted:

This might be better off asked in the SQL/database threads but I'll try here first.

Let's say I've built a todo/task tracking application. I now want to add the ability to have scheduled or recurring tasks and I'm not sure how to model this in the database or how to implement this in the backend.

On the front end it would basically allow a user to do the following:

- Schedule a task into the future one time
- Repeat tasks every __ days
- Repeat a task every week on a specific day
- Repeat a task every month on a specific day or the first/second/etc day/week of the month

These are non-technical users so asking for a cron statement isn't going to work. How would I model this in the database and consume it?

I think you can do with something like this:
- record the last time the task was executed
- flags for whatever repetition types you need (make sense to allow to combine many types, like "every monday for 30 days")
- flag for completed (aka "stop any type of repeated execution")
- (optional) you may need some counters if your repetition is something like "repeat for 88 days"


you do this

code:
#run daily at midnight
foreach( active tasks ) {
    if( need to show today() ){
         if( !revisedToday() ){
             showToday();
             markRevisedToday();
          }
    }
}


function need to show today(){
    // returns true if based on the repetitions flags / counters,  should show today
}

Tei fucked around with this message at 22:01 on Dec 2, 2020

kiwid
Sep 30, 2013

Tei posted:

I think you can do with something like this:
- record the last time the task was executed
- flags for whatever repetition types you need (make sense to allow to combine many types, like "every monday for 30 days")
- flag for completed (aka "stop any type of repeated execution")
- (optional) you may need some counters if your repetition is something like "repeat for 88 days"


Thanks, after looking into it further it looks like this is called RRULE and there are libs out there to make this easier: https://github.com/rlanvin/php-rrule

Tei
Feb 19, 2011
Probation
Can't post for 7 days!

kiwid posted:

Thanks, after looking into it further it looks like this is called RRULE and there are libs out there to make this easier: https://github.com/rlanvin/php-rrule

cool!, using something already made is perfect and a good practice

I build something like this years ago, but is cool that theres a library now. If I have to do something like this again I will use this library or one like it

ModeSix
Mar 14, 2009

I have a very particular issue I am trying to tackle with string sorting and I've got it 80% of the way there.

Let's say I've got 5 strings as follows:

2 for 1 - 6" Apple Pies
2 for 1 - 12" Apple Pies
50% Off - Banana Cakes
50% Off - 30 Carrot Cakes
2 For 1 - Dead Thing
2 for 1 - 5 Zebra Skins

Right now I can get them to sort like this:
50% off - Banana Cakes
2 for 1 - Dead Thing
2 for 1 - 6" Apple Pies
2 for 1 - 12" Apple Pies
50% Off - 30 Carrot Cakes
2 for 1 - 5 Zebra Skins

But ideally I'd like them to be sortable in alphabetical order, then by quantity/size if there is one as shown in the top list. Taking into account that 6 is before 12 (as we all know numbering in php is a pain).

I've gotten it most of the way there using explodes, substrings etc. but I can't figure out how to merge with leading numbers, without leading numbers together to get a pure alphabetical, then size/quantity list.

If someone can point me in the right direction on thi it would be super helpful.

My spaghetti mess looks like this right now:

code:
if (mysqli_num_rows($result) != 0) {
		while ($crow = mysqli_fetch_array($result)) {
			$_excname = explode("-", $crow['PageName']);
			
			if (strlen(trim($_excname[1])) > 0) {
				$_cname = $_excname[1];
			} else {
				$_cname = $_excname[0];
			}

			$_cnum = preg_match_all('!\d+!', $_cname, $matches);

			if ($_cnum > 0) {
				$_csort = $crow['StoreName'] . ',' . str_pad(trim($_cname), 70, '0', STR_PAD_LEFT); 
			} else {
				// This puts named items before items with a quantity
				$_csort = $crow['StoreName'] . ',0,' . trim($_cname);

				// This puts items with a quantity items before items with only a name
				//$_csort = $crow['StoreName'] . ',99999,' . trim($_cname);
			}

			$_coupons[$_x][0] = $crow;
			$_coupons[$_x][1] = $_csort;
			$_x++;
		}
	}
	usort($_coupons, function ($a, $b) { // anonymous function
		// compare numbers or strings non-case-sensitive
		return strcmp(strtoupper($a[1]), strtoupper($b[1]));
	});

Jabor
Jul 16, 2010

#1 Loser at SpaceChem
Rather than trying to fudge everything into a string comparison, just do the actual comparison you want inside your compare function:

code:

usort($_coupons, function ($a, $b) { 
  preg_match('/- (\d*)(.*)/', $a, $a_parts);
  preg_match('/- (\d*)(.*)/', $b, $b_parts);

  if (strcmp($a_parts[2], $b_parts[2]) != 0)
    return strcmp($a_parts[2], $b_parts[2]);
  // names are the same, compare quantities
  return $a_parts[1] <=> $b_parts[1];
});

ModeSix
Mar 14, 2009

Does anyone have any recommendations for creating a REST API that is backed by an existing MySQL database?

I've taken a look at Lumen, but honestly I can't figuring the routing on it, even though syntactically it looks almost exactly like creating a REST API in NodeJS(Express). The documentation on Lumen is so poor I can't figure out to get it to work.

ModeSix fucked around with this message at 04:27 on Jan 7, 2021

musclecoder
Oct 23, 2006

I'm all about meeting girls. I'm all about meeting guys.

ModeSix posted:

Does anyone have any recommendations for creating a REST API that is backed by an existing MySQL database?

I've taken a look at Lumen, but honestly I can't figuring the routing on it, even though syntactically it looks almost exactly like creating a REST API in NodeJS(Express). The documentation on Lumen is so poor I can't figure out to get it to work.

How robust does it need to be? Is this just a couple of endpoints? If so, any modern framework (Symfony, Laravel) will allow you to set one up very easily, provide serializers and normalizers to convert your data to/from one format to another. If it needs to be very robust, really respect HATEOS, HTTP, REST, etc then you may want to look into API Platform: https://api-platform.com/

ModeSix
Mar 14, 2009

musclecoder posted:

How robust does it need to be? Is this just a couple of endpoints? If so, any modern framework (Symfony, Laravel) will allow you to set one up very easily, provide serializers and normalizers to convert your data to/from one format to another. If it needs to be very robust, really respect HATEOS, HTTP, REST, etc then you may want to look into API Platform: https://api-platform.com/

It's going to be pretty simple, using it to generate endpoints for a mobile application that needs access to some site/user data from the main site and doing direct DB calls is a no-no for many reasons. I just need to get some responses from some joins off the database, be able to put updates and validate auth. Simple is all I need.

I'll take a look at Symfony, I think Lumen uses it in there because I was getting some good errors off of it that referenced Symfony.

musclecoder
Oct 23, 2006

I'm all about meeting girls. I'm all about meeting guys.

ModeSix posted:

It's going to be pretty simple, using it to generate endpoints for a mobile application that needs access to some site/user data from the main site and doing direct DB calls is a no-no for many reasons. I just need to get some responses from some joins off the database, be able to put updates and validate auth. Simple is all I need.

I'll take a look at Symfony, I think Lumen uses it in there because I was getting some good errors off of it that referenced Symfony.

Yeah I'd stick with a basic straightforward Symfony application. Controllers can be as simple as:

php:
<?
class ApiController
{

    public function getSomeData(Request $request, Serializer $serializer)
    {
        $data = $entityManager->getRepository(Data::class)->findBy([
            'someAttribute' => 'someValue'
        ]);

        return JsonResponse::create($serializer->serialize($data));
    }

}
?>
Something along those lines if you just need to get some data from a database and then respond with JSON to the endpoint. Wrap it around some HTTP Basic authentication and you're good.

spiritual bypass
Feb 19, 2008

Grimey Drawer
You could probably use this to automate the entire thing

https://github.com/mevdschee/php-crud-api

ModeSix
Mar 14, 2009

rt4 posted:

You could probably use this to automate the entire thing

https://github.com/mevdschee/php-crud-api

This looks like exactly what I am looking for. Brilliant, thanks!

Adbot
ADBOT LOVES YOU

Agrikk
Oct 17, 2003

Take care with that! We have not fully ascertained its function, and the ticking is accelerating.
I am bashing my head in over this one.

I am trying to install the php_yaml.dll extension on my windows server (Server 2019 Datacenter v1809) with PHP version 7.0.21 (Thread Safety: Enabled) and I am getting the following error when running php.exe from the command line:

"Warning: PHP Startup: Unable to load dynamic library 'c:\php\ext\php_yaml.dll' - The specified module could not be found."

I have other extensions in the exact same place (c:\php\ext) being accessed the same way (extension=<module>.dll) in c:\PHP\php.ini. I have tested the configuration settings in PHP.ini by renaming an active .dll file which immediately causes the same "Unable to load dynamic library" to show up, so I know the settings are pointing to the right places.

For some reason PHP can't see php_yaml.dll. I have tried php_yaml-2.0.4-7.0-nts-vc14-x64 and php_yaml-2.0.4-7.0-ts-vc14-x64 and php_yaml-2.0.4-7.1-ts-vc14-x64 and they all behave the same way. I even tried php_yaml-2.2.1-7.4-ts-vc15-x64 and got a different error about "the procedure entry point" couldn't be located, which I'm sure has to do with the wrong version of VC14 vs VC15, but at least I know that PHP is looking in the right place for the file.

So why cant PHP find php_yaml.dll?

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply